City took the lead in the 16th minute through Rayan Cherki, who finished smartly after weaving into the box. Arsenal responded almost immediately, as Kai Havertz capitalised on a mistake by Gianluigi Donnarumma to level the score.
The decisive moment came in the 65th minute when Haaland netted his league-leading 23rd goal, calmly finishing from a cross by Nico O’Reilly to hand City all three points.
The win cuts Arsenal’s lead at the top to just three points, with City holding a game in hand — a scenario that could see Pep Guardiola’s side move into first place.
Arsenal’s title hopes have now taken a hit, with Mikel Arteta’s men struggling for consistency, losing four of their last six matches in all competitions.
Elsewhere, Liverpool and Aston Villa boosted their Champions League ambitions with dramatic stoppage-time victories. Liverpool edged Everton 2-1 thanks to a late header from Virgil van Dijk, while Tammy Abraham struck late to give Villa a thrilling 4-3 win over Sunderland.
In the relegation battle, Morgan Gibbs-White scored a second-half hat-trick to inspire Nottingham Forest to a 4-1 comeback win over Burnley, boosting their survival hopes.