Leeds, meanwhile, guaranteed their place in the top flight next season at the expense of Burnley while Tottenham secured Champions League football, with Arsenal settling for the Europa League.
Here, the PA news agency looks at how the day unfolded in the key fixtures:
4:03pm: Anfield temporarily fell silent after Liverpool, who started the day a point behind City, fell behind within three minutes of kick-off, with Raul Jimenez squaring for Pedro Neto to easily tap in.
4:16pm: Tottenham, in pole position to seal fourth spot, took the lead at Norwich as Rodrigo Bentancur raced in on goal and squared for Dejan Kulusevski to tap in from close range.
4:20pm: Burnley started the day outside the relegation zone but dropped into it when Nathan Collins’ inexplicable handball in the area led to Newcastle being awarded a penalty, which Callum Wilson scored.
4:24pm: Liverpool drew level when Thiago Alcantara’s clever back heel in midfield set Sadio Mane away, and he beat Jose Sa at his near post.
4:32pm: Harry Kane made it 2-0 to Spurs, nodding into an empty net after Norwich goalkeeper Tim Krul inadvertently picked out Bentancur when trying to play out the back.
4:37pm: Tension was increasing at the Etihad Stadium and City’s worst fears were realised before half-time as Aston Villa took the lead when Lucas Digne’s cross was headed beyond Ederson by Matty Cash.
5:05pm: Oleksandr Zinchenko replaced Fernandinho at the beginning of the second half after the City skipper struggled as makeshift centre-back in his final appearance for the club.
5:05pm: Liverpool suffered a blow not just for this game but next weekend’s Champions League final with Thiago, who had limped down the tunnel just before the break, replaced by James Milner.
5:16pm: Burnley falling behind against Newcastle had pushed Leeds out of the bottom three and they edged closer to safety after taking the lead at Brentford, where Raphinha opened the scoring from the penalty spot after being hauled down by David Raya.
5:20pm: Burnley moved closer to the trapdoor as Wilson was left completely unmarked to sidefoot home Allan Saint-Maximin’s cross from close range for Newcastle’s second goal at Turf Moor.
5:24pm: Spurs put the game to bed in the 64th minute as Kulusevski added a fine second. Set free by Kane, he outmuscled his marker and then curled a sublime shot into the far corner. Son Heung-min then earned a share of the Premier League Golden Boot with a late double.
5:29pm: City were left reeling when Villa doubled their lead. Rodri was all too easily beaten in the air by Ollie Watkins, who flicked on to Coutinho and the former Liverpool star struck low past a statuesque Ederson.
5:29pm: Maxwel Cornet got a goal back in the 69th minute to give Burnley some hope, thumping home on the rebound after Martin Dubravka saved his initial effort.
5:36pm: City brought the deficit back down to one as Raheem Sterling crossed for fellow substitute Ilkay Gundogan to head home.
5:38pm: Just like last weekend at West Ham, City recovered from two goals down to level. Rodri scored a stunning daisy-cutter from 20 yards, just moments after they had pulled one back.
5:38pm: Brentford dented Leeds’ hopes of avoiding the drop with the leveller as Yoane Wissa crossed the ball to the back post and Sergi Canos headed home. Two minutes later Canos was shown a second yellow card for a foul on Raphinha, having been booked for taking his shirt off in celebration.
5:41: City’s astonishing comeback was complete – just six minutes after they were still trailing 2-0. Kevin De Bruyne drove a low cross to the far post for Gundogan to tap home as the Etihad Stadium rocked to its foundations.
5:44pm: The atmosphere around Anfield was becoming increasingly desperate but, with time running out, they finally found a second goal when a goalmouth scramble ended with substitute Mohamed Salah poking over the line six minutes from time.
5:49: Liverpool made sure of the victory in the final minute of normal time with Andrew Robertson grabbing their third, but hope around Anfield was beginning to fade.
5:55pm: The full-time whistles started to sound around the country, with City hanging on to complete a 3-2 win that rendered Liverpool’s 3-1 victory over Wolves redundant. Jack Harrison scored in added-on time to give Leeds a 2-1 win at Brentford to send down Burnley, who lost 2-1 against Newcastle. Tottenham won 5-0 at Norwich to guarantee fourth spot in the table.