Arsenal earned a first Premier League win over Manchester City since 2015 and condemned the champions to two League defeats on the bounce thanks to a late Gabriel Martinelli winner.
The half-time substitute’s effort cannoned home off Nathan Ake to spark bedlam at the Emirates and send Arsenal joint-top with rivals Tottenham.
Before Martinelli’s strike, the closest either team went in a low-quality affair was when Julian Alvarez charged down David Raya’s sloppy kick in the first half - but the ball ended up in the side netting.
City were lucky not to lose Mateo Kovacic in the first half, with the midfielder only booked for a studs-up challenge on Martin Odegaard which was checked for serious foul play by the VAR, and then somehow escaping a second yellow for another slide tackle on Declan Rice.
Here’s how we rated the Arsenal players...
David Raya 5
Incredibly fortunate that his charged-down clearance ended up in the side netting off Alvarez and missed a Josko Gvardiol cross in a generally shaky display.
Ben White 8
Overlapped well down the right flank and was excellent defensively.
William Saliba 8
Dealt well with Haaland, including one crucial intervention as City threatened to break towards the end of the first half. Helped ensure the Norwegian fed off scraps.
Gabriel 9
See above. Denied Haaland a certain goal with a crucial intervention after Raya missed a deep cross and helped restrict City to no clear chances.
Oleksandr Zinchenko 7
His passing was crisp and he was solidly defensively, standing up well to lively substitute Jeremy Doku.
Declan Rice 8
Cleared an early Gvardiol effort off the line and shielded the defence superbly in a robust performance.
Jorginho 7
Kept possession ticking over for the hosts and was more assured than on his last appearance here, when he was at fault for Tottenham’s equaliser in a 2-2 draw.
Martin Odegaard 7
Moved the ball well and important in playing through City’s press. Didn’t bring his shooting boots though and sent a couple of efforts flying over the bar.
Gabriel Jesus 7
Was direct and lively in Saka’s spot but feels a bit wasted out wide when he is so good centrally.
Leandro Trossard 5
Struggled to make an impact on the game and hooked at half-time.
Eddie Nketiah 5
A willing runner but spanked a first-half effort wide in his only real sight of goal.
Subs
Gabriel Martinelli (Trossard 45’) 8
Made the difference when his strike deflected in off Ake. Immediately made an impact in the second half, and also tested Ederson with near-post effort.
Takehiro Tomiyasu (Zinchenko 75’) 7
Brought on to deal with the direct Doku and Kyle Walker, but ended up playing a key role in the goal.
Kai Havertz (Nketiah 75’) 7
Made the difference for the second League game running with a simple assist for Martinelli’s winner.
Thomas Partey (Jorginho 75’) 7
Made his return from injury and played a part in the winner by starting the move with a long ball towards Tomiyasu.