Goals from Jhon Duran and Morgan Rogers either side of half time saw the hosts claim the spoils as City’s tough run of recent results continued.
An injury time strike from Phil Foden gave Pep Guardiola‘s side hope of claiming a point.
However, Villa held on to claim the three points and so rise above City up to fifth in the Premier League table.
What happened
With City bolstered by the return of both John Stones and Manuel Akanji, Guardiola’s troops stepped out at a blustery and overcast Villa Park seeking to kick-off our festive programme in positive fashion.
However it was the hosts who were straight out of the traps with Villa almost ahead inside a minute.
Within seconds Stefan Ortega Moreno needed to be at his best to produce two stunning saves to deny the hosts.
First, the German delivered a fine diving save to deny Duran who was in one on one after a misplaced Josko Gvardiol.
Ortega then went even better from the resulting corner, executing a stunning left-handed block to claw Pau Torres’ back header back from crossing the line and onto the bar.
A goal line technology check subsequently showed the ball was millimetres away from fully crossing the line to further emphasise the magnitude of Ortega’s block.
And it was the hosts who struck first, Duran firing Villa into a 16th minute lead.
Youri Tielemans was the architect, the Belgian threading a fine long ball between the City back line into the path of the onrushing Rogers.
The former City Academy graduate took his time before feeding the waiting Duran with the Colombian striker making no mistake from 12 yards to register his 12th goal of the season and sixth in six starts.
It was a body blow but City sought to summon up a fitting riposte, dominating territory and possession with Jack Grealish a particular threat on the left flank.
And it needed a fine save by Villa ‘keeper Emi Martinez on 34 minutes to deny a Phil Foden snapshot from the centre of the box after a quickfire City passing move had opened up the opportunity.
Another superb City attack, sparked by a wonderful Gvardiol surge upfield on 43 minutes then saw the Croatian glance a header over the bar as he sought to convert Grealish’s inviting cross with Martinez caught in no-man’s land.
City opted to make a half time switch with Kyle Walker replacing Stones.
And the Blues were then grateful three minutes after the restart when a Matty Cash shot crashed into the side netting after another quick Villa counter-attack.
Duran then had the ball in the City net once more on 51 minutes but a VAR check confirmed the Colombian was offside after breaching the visitors’ back line.
City were grateful again on the hour after the dangerous Rogers fired in a low eight-yard effort that clipped the outside of Ortega’s post.
But Villa’s second half pressure eventually garnered fruit as Rogers struck to double the hosts’ lead on 65 minutes.
The England midfielder carved open a fraction of space midway in the City box after some more impressive build-up play before despatching a left footed shot past Ortega.
City urgently needed a response and Foden then tested Martinez’s reflexes again.
And deep in added time, Foden’s energy and perseverance was rewarded when he struck from close range for his first Premier League goal of the season.
But there wasn’t enough time for City to claim a point.
Teams
ASTON VILLA XI: Martinez, Cash, Konsa, Pau, Digne, Kamara, Onana, Tielemans, McGinn (C), Rogers (Buendia 90), Duran (Watkins 80)
Subs: Olsen, Mings, Nedeljkovic, Bogarde, Maatsen, Barkley, Bailey
CITY XI: Ortega, Lewis, Stones (Walker 45), Akanji, Gvardiol, Kovacic (Doku 84), Gundogan (Savinho 73), Bernardo (C), Foden, Grealish, Haaland
Subs: Carson, Ake, De Bruyne, Simpson-Pusey, O’Reilly, McAtee
250 up
Bernardo Silva was entrusted with the captain’s armband once again on what was a landmark occasion for the Portuguese midfielder.
The clash marked the 250th Premier League appearance for a player who has proved one of the best-ever signings in the Pep Guardiola era.
The only disappointment was that the result wasn’t one to help fittingly mark this latest milestone.
Pep’s reaction
We make a really good first half, second half we dropped. We changed our pressing for the reason John [Stones] could not continue. Congratulations Aston Villa and keep going.
We have good moments, we had chances, more chances than in the [Manchester] United game, but in the second half we dropped and our pressing was not good enough.
We struggled a little bit and we could not drop them well. We found a goal in the end, but too late.
The solution is bring the players back. We have just one central defender fit, that is difficult. We are going to try next game - another opportunity and we don’t think much further than that.
ERLING HAALAND reaction
It’s difficult to come here but we’re Man City we should be out there. We have to continue, we have to believe and we have to keep working hard.
We have to continue. First I’m looking at myself, I haven’t been doing things good enough, I haven’t been scoring my chances. I have to do better, I haven’t been good enough.
We know how important confidence is and you can see that it affects every human being. That is how it is, we have to continue and stay positive even though it is difficult.
What it means
The result means City slip down to sixth place in the Premier League table.
We have 27 points from 17 games with Villa having moved up into fifth position on 28 points after today’s victory.
WATCH: Brief highlights: Aston Villa 2-1 City
What’s next
City return to the Etihad on Boxing Day for a key Premier League clash at home to Everton.
Kick-off is set for 12.30pm (UK).
News about A Villa v Man City
Pep even more driven to help City return to winning ways
Pep Guardiola said he was more determined than ever to help inspire City back to winning ways in the wake of Saturday’s 2-1 Premier League loss at Aston Villa. Read more
Guardiola praises Haaland’s determined attitude
Pep Guardiola is delighted with Erling Haaland’s attitude although he doesn’t agree with the striker’s assessment that he needs to do more. Watch more
Brief highlights: Aston Villa 2-1 City
Watch bite-sized action from City’s Premier League trip to Villa Park. Watch more
Haaland: We need your support more than ever
Erling Haaland has provided special praise for City's fans after more great support, despite losing 2-1 to Aston Villa in the Premier League. Watch more
Extended highlights: Aston Villa 2-1 City
Watch extended action from City's latest Premier League clash away at Aston Villa... Watch more