Kevin De Bruyne netted the opener with a low, left-footed effort from 16 yards.
Sergio Aguero made it 2-0 from the penalty spot 10mins into the second half after Raheem Sterling was shoved in the box by Nacho Monreal.
Substitute Alexandre Lacazette halved the deficit with a low drive through Ederson’s legs.
But City regained their two-goal lead through their own sub Gabriel Jesus despite David Silva being in an offside position before crossing.
The result means City are now unbeaten in 23 games in all competitions, while Arsenal drop down to sixth place, 12 points off the leaders.
Manchester United have now fallen eight points behind league leaders City after losing 1-nil at Chelsea.
Alvaro Morata headed home Cesar Azpilicueta’s cross in the 55th minute.
Chelsea closed to within nine points of the leaders and calmed the pressure on Antonio Conte.
Tottenham Hotspur beat Crystal Palace 1-0 at Wembley.
South Korea forward Heung-Min Son scored the winner.
As a result, Spurs remain third in the table, while Palace are still bottom.
Everton come back from two goals down to beat Watford 3-2 in a dramatic contest at Goodison Park.