Aston Villa leapfrogged Manchester City into third place with a club-record 14th home league win in a row, beating the champions more comfortably than the 1-0 margin suggests as Unai Emery finally overcame Pep Guardiola at the 14th attempt.
Villa remain just four points behind leaders Arsenal and can cut the gap to a single point on Saturday when they host the Gunners at fortress Villa Park in a mouthwatering duel.
How the match unfolded
In a bright start, both goalkeepers did well to keep the opening 15 minutes goalless. Ederson saved well from Pau Torres, before Emiliano Martinez made two great saves in quick succession to deny Erling Haaland.
Those proved to be the champions' only two shots of the match, while Villa racked up 22 attempts, the most shots Man City have conceded in a Premier League match under Guardiola.
Villa had the ball in the net when Douglas Luiz rose highest to head in from Lucas Digne’s cross, but the goal was ruled out because Digne had been unable to keep the ball in play.
The chances kept coming for Villa after half-time and in the 74th minute they finally made one of them count through Leon Bailey.
On the counter-attack, Bailey drove at the heart of Man City’s defence and saw his shot deflect off Ruben Dias and loop over Ederson for his fifth league goal of the season, sending Villa Park into delirium.
Douglas Luiz very nearly doubled the lead but his curling strike from the edge of the box cannoned off the right post.
City were well below par and are now winless in four league matches, remaining on 30 points, now six points off the top.
Aston Villa Report | Man City Report
Match officials
Referee: John Brooks. Assistants: Lee Betts, Akil Howson. Fourth official: Anthony Taylor. VAR: Paul Tierney. Assistant VAR: Scott Ledger.
WHO'S GOING TO BE YOUR
MAN OF THE MATCH?
Vote at Full-time