Arsenal led at half-time through Bukayo Saka but had Gabriel sent off after Riyad Mahrez equalised from the penalty spot.
Manchester City extended their Premier League winning run to 11 games as Rodri scored in injury time to settle a heated contest against 10-man Arsenal.
Pep Guardiola’s side had not been at the races until they were awarded a penalty on 57 minutes, with Riyad Mahrez converting to cancel out Bukayo Saka’s opener before Rodri struck in stoppage time to secure a 2-1 victory.
An ill-tempered affair had seen Gabriel Magalhaes sent off after being booked twice inside two minutes, with Arsenal unable to hold on for a deserved point.
Arsenal have a recent woeful record against City, having taken just one point from their previous 11 meetings between the sides heading into the first Premier League fixture of 2022.
But, even with manager Mikel Arteta watching on from home having tested positive for Covid, the Gunners were the better side until they imploded in a bizarre three-minute spell.
In recent years Arsenal have been behind the eight-ball within the opening minutes against City, here they were competing and wanted a penalty as Ederson challenged Martin Odegaard, with a VAR check backing referee Stuart Atwell’s decision not to point to the spot.
City then passed up a great chance to open the scoring as Ruben Dias could only glance a header wide from a Raheem Sterling cross.
It was the hosts, though, who were on the front foot and thoroughly deserved the lead given to them just after the half-hour, Saka sweeping home a Kieran Tierney pass to break the deadlock – Arsenal’s first league goal against City in over nine hours of football.
Gabriel Martinelli would bend an effort just wide as Arsenal looked to increase their advantage towards the end of a first-half they dominated.
There was no immediate reaction to a pedestrian opening 45 minutes for the league leaders – at least until Arsenal proved to be architects of their own downfall.
Having turned down Arsenal’s shouts for a penalty, Atwell incensed the home fans by pointing to the spot after looking at his pitchside VAR monitor and adjudging Granit Xhaka had fouled Bernardo Silva.
Gabriel caused a melee before the penalty, picking up a caution for scuffing the spot, although Mahrez finished coolly to level with City’s first shot on target.
Arsenal should have retaken the lead moments later, Aymeric Laporte and Ederson suffering a miscommunication which saw the former’s backpass bounce towards the line and be hooked away by Nathan Ake.
Martinelli should have tucked home the rebound but could only hit the post on the follow up, and things went from bad to worse for Arsenal when Gabriel was shown a second yellow card moments later for holding back compatriot Gabriel Jesus.
The atmosphere had been souring all afternoon and a number of bookings followed for both sides as it appeared they were set to play out a draw.
City, though, showed why they are champions and why they remain on course to defend their crown.
With six minutes of injury time ticking away, Kevin De Bruyne crossed into the box and Laporte’s effort was blocked into the path of Rodri, who tucked in the winner from seven yards.