Sebastian Larsson’s placed finish was cancelled out by a Mario Balotelli penalty, before Nicklas Bendtner’s header put the Black Cats ahead on the stroke of half time.
Larsson’s second after a slick move 55 minutes in looked to have settled the game, but two goals in two minutes from Balotelli and Aleksandar Kolarov set up a frantic finish.
Sunderland survived four minutes of injury time to come away with a deserved draw, and despite the last-ditch effort the result represents two points dropped by Manchester City rather than a point gained.
City came into the game with a perfect home record of 15 victories from 15 games at the Etihad in the top flight this season, but Sunderland ended that streak with a clinical counter-attacking display masterminded by Stephane Sessegnon.
Victory would have sent Roberto Mancini’s men back to the top of the table, but the draw means they could find themselves five points adrift if Manchester United now win their game in hand at Blackburn Rovers on Monday evening.
What Mancini had earlier in the week described as a “stupid injury” kept Sergio Aguero out, and the Italian instead paired Edin Dzeko with Mario Balotelli up front for just the third time in the Premier League. Carlos Tevez again was named amongst the substitutes, while captain Vincent Kompany returned to boost the defence.
Martin O’Neill made just two changes from the side whose FA Cup hopes ended with defeat at the hands of Everton, with Matthew Kilgallon and Jack Colback coming in.
The game settled into a pattern, with Manchester City for the most part in control, but Sunderland possessing a threat on the break.
As City began to impose themselves it looked as if the visitors had missed their best chance when Craig Gardner struck into the side netting after a slick move after a quarter of an hour.
But City missed opportunities of their own, not least when Balotelli nodded over from close range after a teasing Kolarov corner.
The Italian was clumsy in the first half, and it cost his side when he gave away an innocuous-looking free kick, clipping Colback’s heels on halfway after half an hour.
Sunderland burst forward quickly, with Sessegnon feeding Larsson as the home side slept, and the Swede placed a shot into the corner from just outside the area.
City were sparked into action by the goal, and the end of the half felt more like the end of the match, with some frenzied passages of play.
Gardner brought Dzeko’s winding run from the left to a grinding halt in the penalty area, and Phil Dowd had no hesitation pointing to the spot.
Balotelli finished with typical nonchalance, stroking low into the corner after Simon Mignolet had committed himself.
It looked as if with the momentum behind them Manchester City might end the half ahead.
Instead the half ended in bad-tempered fashion, with emotions bubbling over on both sides after the penalty incident.
But Sunderland had the last laugh, with Sessegnon provider once more, crossing from the right where Bendtner leapt athletically and nodded beyond Joe Hart for his fourth goal in five games.
City had not been behind at the break before this season, and their position went from bad to worse when Sunderland added a superb third.
Sessegnon started the move, driving forward from his own half and threading a ball to Bendtner, the Dane sliding a pass into Larsson's path before a no-nonsense finish.
Mancini threw on Tevez for the quiet David Silva, but it took City some time to rebound from the shock of going two goals down, and their frustrations threatened to boil over.
In one extraordinary moment five City players argued over who was to take a free kick, with a bemused Balotelli eventually sent away from the ball.
Sunderland looked on track for a famous victory, but two strikes in a minute turned the match on its head.
Balotelli, who alternated between brilliant and ordinary with startling regularity in the match, came good to cut in from the right-hand side and launch a ball into the roof of the goal with five minutes remaining.
City attacked from the restart and Kolarov’s low strike from distance found the back of the net.
It gave the men in blue and their anxious fans hope that they could dig themselves out of their hole and keep the pressure on their crosstown rivals – but in the end there was too much to do in too little time.