Mikel Arteta was the man to possibly put an end to City's title hopes as Mario Balotelli lost the plot at the Emirates Stadium.
Balotelli was deservedly sent off in the final minute after referee Martin Atkinson and assistant Peter Kirkup somehow failed to spot his first-half knee-high tackle on Alex Song, and he could now face a lengthy ban.
His eventual dismissal came moments after Arteta's spectacular winner for the Gunners boosted their bid for a top-four finish.
The home side created enough chances to have been well ahead by half-time, with Robin van Persie's goalbound header striking team-mate Thomas Vermaelen.
After the woodwork twice again came to City's rescue in the second half, the Gunners were not to be denied as, with three minutes left, Arteta strode forwards to smash a 25-yard drive past Joe Hart into the bottom corner
City finished the match with 10 men when Balotelli was shown a second yellow card for clattering into Bacary Sagna.
Earlier in the day, Wayne Rooney and Paul Scholes scored the goals for United, but relegation battlers QPR were on the end of two dubious decisions in the opening quarter of an hour.
Rooney, who was fortunate to escape punishment for an earlier rash challenge on Samba Diakite, drilled the Red Devils in front from the penalty spot after an incident which saw Shaun Derry sent off.
The QPR captain was penalised for an apparent tug on Ashley Young, but the United winger made the most of any contact and was also offside when the ball was played into the box.
QPR were already struggling to get a foothold in the game at that stage and, despite the occasional foray into the opposition half, spent most of the match penned in by the leaders.
Rafael da Silva was denied by a combination of Paddy Kenny and the crossbar before the irrepressible Scholes put the game beyond doubt by rifling home from 25 yards on 68 minutes.
Michael Carrick then smacked a thunderbolt against the post, but it was his midfield partner Scholes who earned the plaudits with a great performance.