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 an 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 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, helped by his former 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.
City looked crestfallen but showed their class and character once Gundogan gave them hope with that header, and they scented their chance, even though some of their fans still feared this might only be a consolation.
Ilkay Gundogan had only been on for eight minutes when he scored his first, with the second coming five minutes laterRodri's equaliser was the transformative moment, a sense of inevitability sweeping around a fevered stadium, with a mixture of disbelief and elation the result as 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 amid a deafening din.
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.
Villa collapse under pressure
For Aston Villa, there was nothing significant riding on the game - but the way they went about trying to win it was typical of the Premier League's competitive integrity.
Gerrard and Coutinho's Liverpool connections added the sub-plot. And every part of this storyline delivered.
Villa were solid, disciplined and a real threat on the break, homing in on 37-year-year-old Fernadinho as a defensive weak point for Manchester City.
It worked as City, unusually flat in attack, were vulnerable at the back. When Villa went 2-0 up, it looked as if their season would end in a landmark win - and for Gerrard, the added satisfaction of seeing his beloved boyhood club win the title.
Philippe Coutinho's goal briefly gave his former side Liverpool hope in the title raceAnd yet, they were over-run as the City machine suddenly hit top gear, roared forward thunderously by fans whose mood had changed from despair to expectation.
The first 70 minutes at least demonstrated that Gerrard has something to build on. After that, though, Villa were simply swept aside on the tide of Manchester City's power plus the noise and emotion inside Etihad Stadium.
Follow all the final day action live!
Player of the match
Philippe CoutinhoPhilippe Coutinho
Aston Villa
Squad number23Player namePhilippe Coutinho
Squad number2Player nameCash
Squad number7Player nameMcGinn
Squad number27Player nameDigne
Squad number11Player nameWatkins
Squad number16Player nameChambers
Squad number41Player nameJ Ramsey
Squad number10Player nameBuendía
Squad number6Player nameDouglas Luiz
Squad number5Player nameMings
Squad number25Player nameOlsen
Squad number19Player nameNakamba
Squad number20Player nameIngs
Squad number18Player nameYoung
Line-ups
Man City
Formation 4-3-3
31Ederson
5Stones25Fernandinho14Laporte27Cancelo
17De Bruyne16Rodri20Bernardo Silva
26Mahrez9Gabriel Jesus47Foden
31Ederson5Stones25FernandinhoSubstituted forZinchenkoat 45'minutes14Laporte27Cancelo17De Bruyne16Rodri20Bernardo SilvaSubstituted forGündoganat 68'minutes26MahrezSubstituted forSterlingat 56'minutes9Gabriel Jesus47FodenSubstitutes
2Walker6Aké7Sterling8Gündogan10Grealish11Zinchenko33Carson80Palmer87McAteeAston Villa
Formation 4-3-2-1
25Olsen
2Cash16Chambers5Mings27Digne
7McGinn6Douglas Luiz41J Ramsey
10Buendía23Coutinho
11Watkins
25Olsen2Cash16Chambers5MingsBooked at 49mins27Digne7McGinn6Douglas Luiz41J RamseySubstituted forIngsat 83'minutes10BuendíaSubstituted forYoungat 88'minutes23CoutinhoSubstituted forNakambaat 72'minutesBooked at 87mins11WatkinsSubstitutes
8Sanson15Traoré18Young19Nakamba20Ings33Chukwuemeka38Sinisalo45Chrisene47IroegbunamReferee:Michael OliverAttendance:53,395Live Text
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.
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