Less than two minutes had been played when City put together their first lightning counter of the afternoon, and it almost brought a goal for club record scorer Sergio Aguero.
After an Alexis Sanchez cross had been cleared, Raheem Sterling raced into the Arsenal half and fed Kevin De Bruyne who slipped a pass to Aguero, only for the striker to slice wide.
But the Gunners hit back and, when Hector Bellerin crossed low towards Mesut Ozil, they forced a corner from which City eventually hacked clear.
Ozil fired a bobbling effort well wide from a Sanchez pass after the visitors had won possession back in a dangerous position.
But City roared down to the other end and were within a whisker of taking the lead when Sterling just failed to touch in Leroy Sane's cross from the left.
With 18 minutes gone they were close again as Petr Cech denied De Bruyne from the edge of the box -- but within less than a minute De Bruyne opened the scoring with a fierce angled strike into the corner.
The Belgium international threatened again when Sanchez lost possession, but his pass towards Sane, in space on the left, was cut out by Bellerin.
City should have doubled their lead after 36 minutes when, after another rapid break, Sterling produced a terrible final pass with the unmarked Sane waiting.
Boss Pep Guardiola was visibly frustrated and had further cause to feel that way when Kyle Walker's cross cannoned around the Arsenal area, with a touch off defender Laurent Koscielny being blocked by Cech.
His frustration was almost deepened when Arsenal came close to levelling in first-half stoppage time, Aaron Ramsey's low strike saved by Ederson.
But with just three minutes of the second half gone, City struck again as Fernandinho played the ball out to Sterling on the left and he went down under Nacho Monreal's challenge inside the area.
The referee pointed to the spot and Aguero did the rest, sending Cech the wrong way with a penalty that clipped the inside of the post on its way in.
Iwobi caused a moment of concern after 55 minutes when Ederson fumbled his shot from distance, with the keeper barged into the net by Aaron Ramsey as he followed up.
Arsene Wenger brought on striker Alexandre Lacazette for Francis Coquelin as he sought a way back into the game, while Aguero made way for Gabriel Jesus.
And with 65 minutes the game sparked back into life as Lacazette made his mark, sending an angled finish beyond Ederson from Ramsey's pass to put Arsenal back into the game.
Sterling's looping cross was volleyed goalwards by Sane and blocked by Bellerin as City struck back, and from the corner Cech made a fine save to deny substitute Jesus from close range.
But within 74 minutes gone the home side wrapped it up, Arsenal waiting for an offside flag that never came as David Silva darted into the box to set up the easiest of close-range finishes for Jesus.