The win gave City 32 points, just three behind Arsenal and two ahead of Chelsea, who were playing strugglers Crystal Palace later in the day, and Liverpool, who play Spurs on Sunday.
Etihad Stadium has been an impregnable fortress for City this season. They have won all eight of their home matches in the Premiership, scoring 35 goals and conceding just five.
The home side were in top form offensively for most of the first half. Sergio Aguero drew first blood after 13 minutes, knocking in a headed pass from Martin Demichelis after a corner.
Theo Walcott replied for the visitors in the 31st minute, taking a pass outside the box from Mesut Ozil and drilling it into the bottom right corner of the net.
Seven minutes later, Alvero Negredo restored the hosts' lead with a left-footed shot from very close range, assisted by Pablo Zabaleta.
City made it 3-1 after 57 minutes when summer signing Fernandinho pounced on an errant pass by the Gunners' Mesut Ozil and slotted it home.
However, Arsenal got a second wind as the half wore on, and it was Walcott who found the net again after 62 minutes, collecting a through ball from Aaron Ramsey and firing it into the top right corner.
The visitors' elation was short-lived as David Silva restored City's two-goal lead on 65 minutes with a left-footed strike. Fernandinho added more insurance in the 87th minute to make it 5-2.
Arsenal's Per Mertesacker managed a consolation strike in injury time before Yaya Toure scored City's sixth goal from the penalty spot just before the whistle.
Entering the match Arsenal had lost only once on the road in the top flight this season - at Manchester United last month.