Raheem Sterling was the matchwinner at the midway point of the first half when he reacted first to slot home the rebound after Phil Foden's effort was parried by Arsenal stopper Bernd Leno, but City had to rely on their own goalkeeper Ederson to keep them ahead.
It was a first clean sheet of the new Premier League season for Pep Guardiola's side, and the City backline looked much more solid than in recent weeks, with all four defenders putting in good performances.
It will go down as a relatively good performance from City but it was lacking the cut and thrust that Kevin De Bruyne brings to the party. With the game never really sparking into life, the hosts didn't have to bring their absolute A game.
Manager rating out of 10
7 -- Guardiola is battling injuries at both ends of the pitch, but his defensive rejig delivered an assured performance at the back.
Player ratings (1-10; 10 = best, players introduced after 70 minutes get no rating)
GK Ederson, 8 -- Had his palms stung by a fizzing Bukayo Saka effort midway through the first half, before an excellent save denied the same player 10 minutes later. He also stopped Pierre-Emerick Aubameyang from equalising with a super stop.
DF Joao Cancelo, 7 -- The right-back was drafted in at centre-back to add some pace against a rapid Arsenal frontline, but with the Gunners opting for a deep-lying centre forward, the Portugal international had very little defensive work. Got himself in the referee's notebook for a tread on Kieran Tierney's calf in the second half.
DF Nathan Ake, 6 -- The makeshift left-back didn't boast the attacking functionality of a classic Guardiola full-back, but the Dutchman was never in any defensive danger and went about his business quietly but effectively. Booked for timewasting late on.
MF Bernardo Silva, 6 -- Full of hunger when driving through the midfield lines on more than one occasion as he looked to liven up a somewhat sleepy opening period. Perhaps more impactful in a more advanced role but still an effective cog in the No. 8 role.
MF Phil Foden, 6 -- Forced a good save from Leno before Sterling tucked away the rebound, and that wasn't the only time he gave the Arsenal stopper something to think about. Replaced in the closing stages by Fernandinho.
MF Riyad Mahrez, 7 -- Almost found the net in glorious fashion in the opening minute with a curling effort from distance, before a perfectly weighted pass released Sergio Aguero on the way to City's opener. A constant threat in the first half but failed to make the same impact in the second.
MF Raheem Sterling, 7 -- Cool as you like when he stroked home the loose ball after Foden's shot was parried into dangerous territory by Leno, and City's flying winger looked the most likely to make something happen for his side in a tight second half.
FW Sergio Aguero, 6 -- Played his part in the opener with a slide-rule pass for Foden, and the Argentina international showed some neat touches on his return to the side after four months out, before being replaced by Ilkay Gundogan after 64 minutes.
Ilkay Gundogan, 6 -- Did what he needed to do and kept play ticking over in the heart of midfield as Arsenal failed to mount a serious push for an equaliser.
Fernandinho, N/A - Helped see the game out late on.