Villa are celebrating their first Barclays Premier League home victory - and it could hardly have arrived in more dramatic fashion.
Outplayed in the first half and trailing twice to a slick City side who had routed Manchester United last week, Paul Lambert's men battled their way back on each occasion before grabbing a winner which even diehard fans could not have predicted.
Karim El Ahmadi's first goal since his home debut more than a year ago brought Villa level in the 51st minute after Yaya Toure had opened the scoring just before half-time.
And despite conceding a second goal - from Edin Dzeko - fiveminutes later, the home side equalised for a second time on 73 minutes when Leandro Bacuna netted a superb free-kick for his first Villa goal.
And two minutes later Andi Weimann claimed the winner when his shot rolled towards goal and was almost sucked over the line by a jubilant Holte End.
Yet no-one could have anticipated such a sensational turn-around as the first half unfolded.
Villa were on the back foot for lengthy periodsas the visitors knocked the ball around with all the confidence of a side who had hit nine goals in their previous two matches.
Although Bacuna fired wide following El Ahmadi's crossfield pass, the visitors posed more of a threat in the opening exchanges, Dzeko's close-range shot being saved by Brad Guzan before Samir Nasri worked his way into a good position for a low 20-yard effort which deflected for a corner.
As Villa tried to force their way into the game, Libor Kozak was brought down by Matija Nastasic's crude challenge 25 yards out.
El Ahmadi curled the resultant free-kick over City's defensive wall but also over the bar.
At the other end, Dzeko and Aleksandar Kolarov both fired well off target before Bacuna against tried his luck, his 32nd-minute drive also failing to test the keeper.
Five minutes before the break, Ciaran Clark came to the rescue by clearing from under the bar after Toure had got in front of Guzan to send a header goalwards.
Then Toure's 30-yarder was deflected behind off Nathan Baker, but the corner let to the visitors going ahead in the 44th minute.
Nasri swung the ball in from the left, although it was partially cleared, Toure hit a low eight-yard shot which the unsighted Guzan could only help over the line.
There was further trouble immediately after the interval, Guzan having to kick clear from Alvaro Negredo when Yacouba Sylla's back-pass fell short.
But in the 51st minute Villa were level.
Fabian Delph played a square pass along the edge of the penalty area to Bacuna, who slipped a short ball between two City players.
El Ahmadi, who had moved into a forward position, drilled a low right-foot shot beyond keeper Joe Hart and into the far corner.
Five minutes later, though, Manuel Pellegrini's men were back in front, Dzeko climbing high to meet Nasri's left-wing corner to divert the ball past Guzan with the back of his head.
Villa's keeper was tested again when he held a singing 25-yard Negrado volley at the second attempt, before Villa responded with a shot which was held by Hart after Vincent Kompany had headed away Delph's free-kick.
In the 73rd minute, Villa were level again.
Weimann was brought down by Nastasic just outside the area, and Bacuna bent a Beckham-esque free-kick past Hart and into the top corner.
Two minutes later Villa Park erupted as Lambert's side went ahead for the first time.
Kozak attempted to flick on Guzan's long kick and although the Czech striker didn't appear to make any contact the ball ran through to Weimann.
The Austrian raced through the middle and nudged it past the advancing, the ball rolling over the line despite Nastasic's desperate attempt to clear as the City defender slid into the net.
Villa: Guzan; Vlaar, Baker, Clark; Bacuna, El Ahmadi, Delph, Sylla, Luna; Kozak, Weimann (Bowery 79). Unused subs: Steer, Bennett, Helenius, Albrighton, Tonev, Lowton.
Manchester City: Hart; Zabaleta, Kompany, Nastasic, Kolarov; Milner, Toure, Fernandinho, Nasri (Navas 65); Negredo, Dzeko (Jovetic 74). Unused subs: Pantilimon, Richards, Lescott, Garcia, Clichy.