Pep Guardiola’s team won 4-1 at Brighton to finish with 98 points – the second-highest total in Premier League history – as Liverpool beat Wolves 2-0 at Anfield to finish a single, agonising, point adrift.
City, who strung together 14 league wins at the end of the season, are the first side to retain the title since their bitter rivals Manchester United managed the feat in 2009, and remain on course for the first domestic treble in English football history.
But Guardiola’s team did not have it all their own way as they won a fourth English title in eight seasons and the sixth in the club’s history.
Indeed, a day of drama on England's south coast was in keeping with an astonishing season in which the lead switched hands time after time.
Liverpool drew first blood on Sunday, with Sadio Mane striking in the 17th minute to put them mathematically top of the table and on course for their first English top-flight title since 1990, before the Premier League era even started.
City fans’ nerves were shredded even further when Glenn Murray put Brighton in front from a corner in the 27th minute, drawing a huge roar at Anfield.
But those cheers were quickly muted, with Guardiola’s side level just 83 seconds later, Sergio Aguero staying onside and keeping his cool to finish after a brilliant ball from David Silva.
Ten minutes later, the unmarked Aymeric Laporte rose to head in Riyad Mahrez's corner to complete the turnaround for City and second-half goals from Mahrez and Ilkay Gundogan put the result beyond doubt.
‘Hardest Premier League’
“We have to say congratulations to Liverpool and thank you so much – they pushed us to increase our standards,” Guardiola told Sky Sports.
“It’s incredible, 98 points, to go back-to-back. We made the standard higher last season and Liverpool helped us – to win this title we had to win 14 in a row. We couldn’t lose one point.
“It’s the toughest title we have won in all my career, by far.”
City announced they would celebrate with their own fans at their Etihad Stadium later on Sunday.
City finished a record 19 points clear of United last season, but this term has been a totally different campaign.
Guardiola’s side had to dig deep to see off the relentless challenge of Liverpool, who lost just one Premier League game all season.
The champions ground out a number of 1-0 victories in recent weeks, showing they have added steel to their style.
The outcome was cruel on Liverpool, who are second behind only United in the all-time list of English champions with 18 titles.
Liverpool boss Jurgen Klopp praised City but vowed his side would be back.
“City got the points they have because we were there,” he told the BBC.
“They have 198 points in two years, that’s special. We made such big steps. It’s only the first step. Always after a good year we lost key players (in the past) but we won’t (this time) so we’ll be there again.”
Liverpool forward Mohamed Salah shared the Premier League Golden Boot award with teammate Mane and Arsenal’s Pierre-Emerick Aubameyang after they all scored 22 goals.
The Merseysiders’ points tally is the third-highest in Premier League history.
Klopp’s side travelled to face City at the Etihad in January with the chance to open up a 10-point lead but the defending champions won 2-1 in what turned out to be the pivotal match of the campaign.
Liverpool suffered a blip in late January and February, held to a series of draws, but they found their form again and relentlessly harried City, finishing with nine straight league wins.
Klopp’s team will have to put the disappointment behind them as they prepare to face Premier League rivals Tottenham Hotspur in the Champions League final in Madrid on June 1.
Elsewhere on the final day of Premier League action, Spurs made mathematically certain of a place in the top four, drawing 2-2 against Everton.
Arsenal beat Burnley 3-1 while fellow Europa League finalists Chelsea were held to a goalless draw at Leicester.
Ole Gunnar Solskjaer’s Manchester United finished their season with a whimper, losing 2-0 at home to relegated Cardiff – a side he once managed.
There were also wins for Crystal Palace, Newcastle and West Ham. Southampton and relegated Huddersfield drew 1-1.