Shay Given emerged a hero on both sides of Manchester by saving a late Frank Lampard penalty to give City a precious 2-1 win over Chelsea and cut their advantage over United to two points.
Carlos Tevez's brilliant free-kick ultimately proved decisive after Emmanuel Adebayor had inadvertently put Chelsea in front, then cancelled out that own goal himself seven minutes before the interval.
However, that hardly told the story as bad tempered Chelsea went down in a hail of yellow cards - six in all - and skipper John Terry went off with a leg injury that will bring a moment of dread to Fabio Capello even if the damage is not too great.
The two first-half goals were certainly not in keeping with a pulsating opening in which City more than matched their highly-rated opponents without ever looking completely secure at the back.
Mark Hughes' men had already been given one warning when Shay Given turned away Drogba's angled drive.
Yet, when he looks at the replay, Hughes will probably conclude the main factor in Chelsea's opener was complete bad luck.
Didier Drogba and Branislav Ivanovic could both have been more closely marked at the start of the scramble but the Blues survived that lapse when Given made his first save.
The ball bounced back to Anelka but Given got behind his shot too.
But the Republic of Ireland star could not legislate for the ball shooting upwards, striking Adebayor on the back and bobbling in.
As Chelsea should not have been awarded the corner which started the whole melee off in the first place, City could have been forgiven for believing it was not to be their day.
Far from it. They poured forward and if their delivery from set pieces had been less persistent in picking out Petr Cech, the equaliser might have come long before it did.
Cech's only mistake had been to come for a Shaun Wright-Phillips' cross and get nowhere near as Richards rose. Ricardo Carvalho read the situation perfectly though and made a splendidly acrobatic clearance.
City kept up their offensive and when Wright-Phillips drove another shot into the Chelsea box it ultimately brought their equaliser.
Terry, who was linked so heavily with a move to Eastlands last summer, was still complaining to referee Howard Webb at half-time that Richards handled Wright-Phillips' shot.
It was difficult to see what the England Under-21 full-back could have done to get out of the way though.
The ball deflected into Adebayor's path and did so again when it bounced back back off the England skipper. At the second time of asking Adebayor did not fail to make up for his earlier misfortune.
If Drogba's free-kick in the final minute of the half had been one inch inside Given's left-hand post rather than just outside it, City might have had problems responding.
As it was, they were the ones with the impetus when the sides returned and got their noses in front.
In keeping with the others, there was an element of controversy about the goal.
Ricardo Carvalho did have a point when he claimed he had been looking at the ball as he went for an aerial challenge with Tevez, but he also kept a leg in the air long enough to plant it into the Argentina star's back.
Tevez added insult to the resulting yellow card though, curling a crisp free-kick into the bottom corner.
The loss of Richards and Wayne Bridge to injury hardly assisted City in their efforts to cling on for a win, but Juliano Belletti's studs-first challenge that led to Bridge being carried off could easily have left Chelsea with 10 men.
That bad-tempered tackle led to a few more. At one point Ashley Cole and Deco were booked for offences in the same passage of play.
Prior to that though, Given had emerged the hero when he turned away an admittedly poor Lampard penalty after Onuoha had upended Drogba.
There was still time for Terry to limp off and Drogba to waste a glorious chance to level at the death although City, and Given, deserved their success.
Copyright (c) PA Sport 2009, All Rights Reserved.
Do YOU want to write for GiveMeSport? Get started today by signing-up and submitting an article HERE: http://gms.to/writeforgms