Ilkay Gundogan scored twice as Manchester City - 2-0 down with 14 minutes left - came back to win
Manchester City staged a stunning late comeback with three goals in five minutes to beat Aston Villa and win the Premier League as their title chances looked to be slipping away amid dramatic scenes at Etihad Stadium.
Pep Guardiola's side needed victory to secure their fourth title in five seasons but were facing the prospect of ending the season empty-handed as goals either side of the interval from Matty Cash and Philippe Coutinho put Villa 2-0 ahead and in control.
It looked as if Villa manager Steven Gerrard might help his former club Liverpool secure the title - until City turned the game on its head in at atmosphere bordering on hysteria.
Ilkay Gundogan, on as a substitute for Bernardo Silva, gave City hope with a far-post header in the 76th minute, and Etihad Stadium was a wall of noise when Rodri drove a low finish past Villa keeper Robin Olsen two minutes later.
The title-winning recovery was complete with nine minutes left as Gundogan once again arrived at the far post to put City in front, the decisive contribution on this nerve-shredding final day.
City did need those three points as Liverpool beat Wolverhampton Wanderers - with City boss Guardiola overcome with emotion and breaking down in tears at the final whistle.
Man City show the grit and class of champions
When Coutinho slid in Villa's second goal, it looked as if the most unpalatable of storylines was being written for Manchester City.
The notion of this supremely talented side ending the season with nothing was in clear view as City knew they had 21 minutes to score three times.
The headlines were being written in large type with Gerrard, who never won the Premier League title during his long career at Liverpool, directing the trophy to Anfield in another guise, helped by his former Anfield team-mate Coutinho.
And then, in one of the most dramatic twists of any Premier League title race, City knocked down the door that had been firmly slammed in their face by a supremely well-organised Villa.
Philippe Coutinho's goal briefly gave his former side Liverpool hope in the title race
City looked crestfallen but showed their class and character once Gundogan gave them hope with that header, scenting their chance, even though some of their fans still feared this might only be a consolation.
Rodri's equaliser was the transformative moment, a sense of inevitability sweeping around as fevered stadium, with a mixture of disbelief and elation the result of Gundogan slid home the third.
Villa did not know what had hit them and had no response, supporters flooding on to the pitch when referee Michael Oliver sounded the final whistle in a deafening din.
Manchester City have had their character questioned this season, especially when they let the Champions League semi-final against Real Madrid slip from their grasp, but there can be no more doubts after this.
The manner in which they turned this game around with the title - and their entire season - on the line was the perfect answer. They were heading towards the most bitter disappointment but transformed this day into one they and their supporters will remember forever.
It was little wonder Guardiola broke down at the conclusion of a truly remarkable afternoon.
More to follow.
Follow all the final day action live!
Player of the match
Philippe CoutinhoPhilippe Coutinho
with an average of 8.07
- Man CityManchester CityManchester CityAston VillaAston VillaAston Villa
Manchester CityAvgSquad number8Player nameGündoganAverage rating
Squad number11Player nameZinchenkoAverage rating
Squad number7Player nameSterlingAverage rating
Squad number17Player nameDe BruyneAverage rating
Squad number47Player nameFodenAverage rating
Squad number16Player nameRodriAverage rating
Squad number9Player nameGabriel JesusAverage rating
Squad number20Player nameBernardo SilvaAverage rating
Squad number31Player nameEdersonAverage rating
Squad number5Player nameStonesAverage rating
Squad number27Player nameJoão CanceloAverage rating
Squad number26Player nameMahrezAverage rating
Squad number25Player nameFernandinhoAverage rating
Squad number14Player nameLaporteAverage rating
Aston VillaAvgSquad number23Player namePhilippe CoutinhoAverage rating
Squad number2Player nameCashAverage rating
Squad number7Player nameMcGinnAverage rating
Squad number27Player nameDigneAverage rating
Squad number11Player nameWatkinsAverage rating
Squad number16Player nameChambersAverage rating
Squad number41Player nameJ RamseyAverage rating
Squad number10Player nameBuendíaAverage rating
Squad number6Player nameDouglas LuizAverage rating
Squad number5Player nameMingsAverage rating
Squad number25Player nameOlsenAverage rating
Squad number19Player nameNakambaAverage rating
Squad number20Player nameIngsAverage rating
Squad number18Player nameYoungAverage rating
- Line-upsMatch StatsLive Text
31Ederson5Stones25Fernandinho14Laporte27Cancelo17De Bruyne16Rodri20Bernardo Silva26Mahrez9Gabriel Jesus47Foden
- 31Ederson5Stones25FernandinhoSubstituted forZinchenkoat 45'minutes14Laporte27Cancelo17De Bruyne16Rodri20Bernardo SilvaSubstituted forGündoganat 68'minutes26MahrezSubstituted forSterlingat 56'minutes9Gabriel Jesus47Foden
25Olsen2Cash16Chambers5Mings27Digne7McGinn6Douglas Luiz41J Ramsey10Buendía23Coutinho11Watkins
- 25Olsen2Cash16Chambers5MingsBooked at 49mins27Digne7McGinn6Douglas Luiz41J RamseySubstituted forIngsat 83'minutes10BuendíaSubstituted forYoungat 88'minutes23CoutinhoSubstituted forNakambaat 72'minutesBooked at 87mins11Watkins
Referee:Michael OliverAttendance:53,395Match StatsHome TeamMan CityAway TeamAston VillaPossessionHome71%Away29%ShotsHome24Away4Shots on TargetHome5Away2CornersHome13Away1FoulsHome5Away11Live TextPost update
Match ends, Manchester City 3, Aston Villa 2.
Second Half ends, Manchester City 3, Aston Villa 2.
Corner, Manchester City. Conceded by Matthew Cash.
Phil Foden (Manchester City) wins a free kick on the left wing.
Foul by Ashley Young (Aston Villa).
Kevin De Bruyne (Manchester City) wins a free kick in the attacking half.
Foul by Marvelous Nakamba (Aston Villa).
Substitution, Aston Villa. Ashley Young replaces Emiliano Buendía.
Marvelous Nakamba (Aston Villa) is shown the yellow card for a bad foul.
Kevin De Bruyne (Manchester City) wins a free kick on the right wing.
Foul by Marvelous Nakamba (Aston Villa).
Phil Foden (Manchester City) wins a free kick in the defensive half.
Foul by John McGinn (Aston Villa).
Foul by Gabriel Jesus (Manchester City).
John McGinn (Aston Villa) wins a free kick in the defensive half.
Substitution, Aston Villa. Danny Ings replaces Jacob Ramsey.
Goal! Manchester City 3, Aston Villa 2. Ilkay Gündogan (Manchester City) right footed shot from very close range to the centre of the goal. Assisted by Kevin De Bruyne.
Attempt missed. Rodri (Manchester City) right footed shot from outside the box is high and wide to the left. Assisted by João Cancelo.
Goal! Manchester City 2, Aston Villa 2. Rodri (Manchester City) right footed shot from outside the box to the bottom left corner. Assisted by Oleksandr Zinchenko.
Attempt saved. John Stones (Manchester City) header from the centre of the box is saved in the bottom left corner. Assisted by Kevin De Bruyne with a cross.
Page 1 of 5rewindpreviousNavigate to the next pagenextNavigate to the last pageforward
- Our coverage of your Premier League club is bigger and better than ever before - here's everything you need to know to make sure you never miss a moment