Manchester City returned to the top of the Premier League for the first time since November as they leapfrogged leaders Arsenal with a vital victory at Emirates Stadium.
The reigning champions turned on the power in the second half in the biggest game of the domestic season as Arsenal paid a heavy price for individual errors.
Takehiro Tomiyasu's poor backpass allowed Kevin de Bruyne to loft a finish over Arsenal goalkeeper Aaron Ramsdale after 24 minutes but Arsenal deservedly drew level three minutes before half-time, Bukayo Saka scoring from the spot after City goalkeeper Ederson fouled Eddie Nketiah.
City, lacking spark in the opening phase, improved after the break and had a penalty of their own ruled out for offside against Erling Haaland before they showed a ruthless streak to punish Arsenal.
Gabriel lost possession to allow Bernardo Silva and Haaland to set up Jack Grealish for a deflected finish after 72 minutes before they ended Arsenal's hopes with 10 minutes left.
Inevitably, Haaland was the scorer from De Bruyne's pass to put City top on goal difference having played one game more than Arsenal.