John Stones netted a stoppage-time equaliser as Manchester City snatched a dramatic 2-2 draw in a thrilling clash with 10-man Arsenal.
The Gunners had looked like clinging on for victory having played the entire second half at the Etihad Stadium with 10 men after the dismissal of Leandro Trossard for a second bookable offence.
Yet after bombarding the Gunners’ goal, pressure finally paid off deep into time added on as Stones pounced on a rebound to grab a draw that sent City back to the top of the Premier League.
The hosts had led early on through Erling Haaland’s 100th City goal but Arsenal hit back with a superb equaliser from Riccardo Calafiori on his full debut and Gabriel then headed them ahead.
Yet the momentum changed after Trossard kicked the ball away in frustration to incur a second yellow card and City eventually broke through to preserve a 48-game unbeaten home record in the dying seconds.
City were without playmaker Kevin De Bruyne and Arsenal lacked the influence of Martin Odegaard but this was a fiery contest far removed from last season’s tense goalless draw between the sides.
There were fireworks within seconds of kick-off as Rodri went down requiring treatment after an off-the-ball collision with Kai Havertz.
The temperature was raised further moments later as Haaland clattered into William Saliba after chasing a high ball.
He escaped a booking and City settled, going close as Ilkay Gundogan flicked past a defender only to slice wide.
The opener came as the impressive Savinho slipped Haaland through with a well-weighted ball between two defenders. It was a chance the in-form Norwegian was never likely to miss and he duly brought up his City century – from 105 appearances – with a composed finish.
City almost doubled their advantage soon after as Gundogan struck the post from a free-kick but they suffered a blow when Rodri went down with a knee injury after jostling with Thomas Partey at a set-piece.
Mateo Kovacic came on to replace him but had barely joined the action when the Gunners equalised.
Kyle Walker, having been speaking to referee Michael Oliver seconds earlier, was caught out of position as Arsenal launched a free-kick down the left to Gabriel Martinelli.
With space to run into, the Brazilian stretched the City defence and pulled back for Calafiori to curl a superb first-time shot into the far corner.
Arsenal noticeably grew in confidence and were unlucky not to take the lead when Gabriel headed narrowly over from a corner.
City, however, failed to learn from that near-miss and were punished when Arsenal repeated the routine at another corner.
Bukayo Saka delivered the cross to the back post and Gabriel freed himself from Walker to head home from close range.
It seemed Arsenal were now in control but momentum changed again in the eighth minute of first-half stoppage time.
Trossard, booked earlier for a tug on Savinho, was penalised for barging into the back of Bernardo Silva. As the whistle blew he booted the ball away in frustration and – as another Arsenal player in Declan Rice found out recently – that is now enough to incur a yellow card.
Arsenal responded by sending on defender Ben White for Saka and trying to sit back. City consequently turned up the heat with Jeremy Doku firing wide and both Walker and Haaland testing David Raya.
It looked like it would not be City’s day when Josko Gvardiol’s volley was saved by Raya but substitute Stones had the final say.