Erling Haaland's 100th Man City goal - and 10th of the Premier League season - was cancelled out by Riccardo Calafiori's first Arsenal strike on his full league debut, before Gabriel Magalhaes headed Arsenal in front on the stroke of half time.
Arsenal entered the interval a man down, though, after Leandro Trossard was sent off for two bookable offenses, forcing Mikel Arteta to park the bus in the second 45 in an attempt to hold on for a win. However, John Stones came off the substitutes' bench to net a dramatic 98th-minute equaliser and salvage a point for Pep Guardiola's men.
Here, Sports Mole takes a look at how each player performed in the top-of-the-table showdown.
Man City player ratings vs. Arsenal: Haaland nets 100th goal
GOALKEEPER
Ederson - 6/10
Ederson was rarely involved throughout the 90 minutes, making just one save and picking the ball out of his net twice in the first half. The Brazilian was predominantly a spectator in the second 45.
DEFENCE
Kyle Walker - 5/10
Walker looked worrying off the pace throughout the first 45. He improved slightly in the second half and had a few pops at goal, but Rico Lewis will be in line for a recall for City's next Premier League game at Newcastle.
Manuel Akanji - 7/10
Akanji won the majority of his aerial and ground duels and looked composed when in possession. He was often seen spraying the ball from left to right on the edge of Arsenal's box in a dominant second half for City.
Ruben Dias - 6/10
Dias put in a similar defensive shift to his centre-back partner Akanji, but left City fans frustrated with his poor efforts on goal from the edge of the area.
Josko Gvardiol - 7/10
Another solid defensive display from Gvardiol this afternoon, barely put a foot wrong and came close to scoring with a sweetly-struck volley four minutes from time.
MIDFIELD
Rodri - 6/10
Rodri looked his imposing self in the middle of the pitch at the start of the first half, but he was forced off with an apparent knee injury in the 21st minute following an innocuous coming-together with Thomas Partey at a corner.
Ilkay Gundogan - 6/10
Gundogan linked up well at times with his teammates in midfield, but like he was against Inter, the German was wasteful when presented with chances in front of goal.
Bernardo Silva - 7/10
A consistent performer on a regular basis and put in decent midfield shift once again, this time in a central position in the absence of the injured Kevin De Bruyne.
ATTACK
Savinho - 7/10
Savinho has seamlessly slotted into Guardiola's first-team plans since arriving in the summer and impressed going forward against Arsenal. He set up Haaland's opener with a perfectly-weighted through-ball in between the Gunners' centre-backs.
Jeremy Doku - 6/10
Doku was frustrated at times during one-on-one duels with Timber down the left and was unable to make a significant contribution in the final third.
Erling Haaland - 7/10
Haaland responded to his midweek Champions League blank with a smart first-time finish beyond Raya in the ninth minute, but he lacked service from his teammates inside the penalty area.
SUBSTITUTES
Mateo Kovacic - 6/10
Kovacic came on midway through the first half for the injured Rodri and looked composed when in possession, boasting a 95% pass completion rate.
Phil Foden - 6/10
Foden came on as a replacement for Doku for the final 20 minutes but was unable to put his stamp on proceedings, despite linking up well with some of his teammates in and around the box.
John Stones - 7/10
Stones was thrown into the action on the 78-minute mark and was in the right place at the right time to slot home City's crucial equaliser in the eighth minute of second-half stoppage time.
Jack Grealish- 5/10
Unlike Stones, Grealish was unable to contribute in the final third after coming on for Savinho 12 minutes from time.
Arsenal player ratings vs. Man City: Raya, Gabriel crushed despite impressive displays
GOALKEEPER
David Raya- 9/10
Arguably Arsenal's Player of the Season thus far who made a total of nine saves, including a superb diving stop to deny Josko Gvardiol four minutes from time.
DEFENCE
Jurrien Timber - 7/10
After playing at left-back for much of this season, Timber was asked to operate on the right side of a back four and rose to the occasion. Looked confident and composed throughout.
William Saliba- 7/10
There was a surprisingly large gap between Arsenal's two centre-backs as Haaland burst through on goal and net his opener, and Saliba could have arguably done better in that moment to close down the Norwegian. Nevertheless, the Frenchman barely put a foot wrong after that and made numerous blocks and clearances to deny City until the late equaliser.
Gabriel Magalhaes- 8/10
Gabriel put in another assured performance at the back for the Gunners and once again showed his exceptional threat from set-pieces with his second consecutive headed goal in as many games. Another colossal display from the Brazilian.
Riccardo Calafiori- 8/10
Calafiori was beaten far too easily by Savinho before he set up Haaland's opener, but the Italian summer signing recovered well and marked his first Premier League start for the Gunners with a stunning side-footed equaliser in the 23rd minute.
MIDFIELD
Declan Rice- 7/10
Rice was not heavily involved but he certainly put in a shift in midfield, particularly in the second 45. He was also booked for time wasting before taking a free kick in the second half.
Thomas Partey- 7/10
Partey performed similarly to his midfield partner Rice and did well to make numerous interceptions in deep midfield areas. He was also booked for a late challenge on Savinho during a Man City counter-attack.
Leandro Trossard- 5/10
Trossard was operating in a central attacking midfield role in behind Kai Havertz, but his outing at the Etihad was marred by receiving two needless bookings; his first for pulling the shirt of Savinho on the break and his second for kicking the ball away after barging into the back of Bernardo Silva in the seventh minute of first-half stoppage time.
ATTACK
Bukayo Saka- 6/10
Saka looked lively in stages during the first half and curled a superb corner onto the head of Gabriel for Arsenal's second before half time, but he was sacrificed at the break following Trossard's dismissal.
Kai Havertz- 6/10
Havertz was rarely involved from an attacking perspective but that was largely due to the fact that he dropped back into midfield for the second half and put in the hard yards defensively.
Gabriel Martinelli- 7/10
Martinelli set up Calafiori for his equaliser and provided a constant out-ball for Arsenal on the counter-attack in the second half, when he also helped out defensively on the left flank.
SUBSTITUTES
Ben White - 6/10
White was surprisingly omitted from Arteta's starting lineup, but he came on for the second half following Trossard's dismissal and operated in a five-man defence. The Englishman helped the Gunners keep City at bay until the late equaliser.
Jakub Kiwior- 6/10
Kiwior replaced Calafiori in the 74th minute and slotted straight into the back five. Nothing too significant from the Polish defender.
Gabriel Jesus - N/A
Booked deep into stoppage time for delaying the restart after coming on in the 87th minute against his former club.
Myles Lewis-Skelly - N/A
Came on in the second minute of second-half stoppage time for his Premier League debut. The 17-year-old was also booked as a substitute in the second half.