Aston Villa twice came from behind to earn an unlikely 3-2 win over Manchester City in a thrilling Premier League encounter at Villa Park.