Frank Lampard's late penalty earned Chelsea victory and condemned leaders Manchester City to their first Premier League defeat of the season.
Lampard - once again excluded from Chelsea's starting line-up by manager Andre Villas-Boas - came off the bench to score the winner with seven minutes left after Joleon Lescott handled Daniel Sturridge's shot.
Mario Balotelli gave City a lead their early domination deserved but Chelsea forced their way back into contention through Raul Meireles's equaliser before half-time.
Roberto Mancini's side were reduced to 10 men early in the second half when Gael Clichy was sent off, leaving Chelsea to make the most of their numerical advantage and record a third win in succession to leave City with a two-point lead over neighbours Manchester United at the top of the table.
City will regret not putting the game out of reach in an imperious opening spell - but Chelsea demonstrated the resilience of old to survive that siege and emerge with a win that puts them only seven points off the Premier League summit.
Villas-Boas insisted Chelsea were showing signs of a revival after beating Newcastle United and Valencia following a torrid spell. This, however, was a serious examination of their recovery and they passed the test successfully.
And Lampard, pushed to the margins in the last two games, proved his character to step up under pressure in the closing minutes to convert that vital penalty. Villas-Boas revealed afterwards that Juan Mata had been the designated spot-kick taker, but after a brief discussion with the Spaniard Lampard took responsibility.
City's unbeaten league run came to an end after 15 games - now Mancini and his players must regroup ahead of Sunday's meeting with improving Arsenal at Etihad Stadium.
Chelsea made one enforced change, with Jose Bosingwa replacing the suspended David Luiz - while Balotelli was recalled to instant effect for City.
CITY'S 10-MAN BAND
Manchester City have now had three men sent off in the last six Premier League games
Sergio Aguero must take much of the credit with a turn that left John Terry trailing and a sublime pass with the outside of his right foot into the path of Balotelli. The young Italian may be turbulent elsewhere, but in the penalty area he is calmness personified, as he proved by dismissing the attentions of Branislav Ivanovic to round Petr Cech to score.
City were in command and should have doubled their lead after 14 minutes when Aguero brushed aside Bosingwa and wrong-footed Ashley Cole, only to drag his shot wastefully wide.
David Silva then appealed for a penalty when he fell under Bosingwa's challenge - but referee Mark Clattenburg waved play on while declining to punish the Spaniard for diving.
Chelsea, as much by force of will as any real superiority, dragged themselves into a game which had been completely in City's control and were rewarded with an equaliser 11 minutes before the break. Once again the goal owed almost as much to the creation as the finish, with the impressive Sturridge escaping from the toiling Clichy before crossing for the incoming Meireles to volley powerfully past City keeper Joe Hart.
Former Manchester City player Sturridge was one of Chelsea's leading lights on a stormy evening and he was only just off target with a rising drive a minute after the restart from Mata's free-kick.
City went down to 10 men just before the hour when Clichy, who had been booked early in the second half for fouling Sturridge, tripped Ramires to earn his second yellow card. It capped a miserable night for the defender, who had suffered in the face of Sturridge's pace and threat.
Chelsea, having been outplayed in the early stages, now sensed victory and Villas-Boas introduced Lampard with 17 minutes left in an attempt to make their numbers count.
Mancini appeared to have settled for a point by removing Aguero for Kolo Toure and sending on Nigel de Jong for Silva - but Chelsea were not to be denied.
And Lampard it was who put Chelsea in front with seven minutes left. There were few complaints from City after Sturridge's shot hit the raised hand of Lescott - leaving Lampard to drill the penalty straight down the middle before celebrating with the supporters behind the goal in the Matthew Harding Stand.
Live Text Commentary
Full Time The referee signals the end of the game.90:00 +4:00
Mario Balotelli concedes a free kick for a foul on Mikel. Branislav Ivanovic restarts play with the free kick.90:00 +2:12
Shot on goal by Didier Drogba from long range goes harmlessly over the target.90:00 +0:16
Gnegneri Toure Yaya challenges Jose Bosingwa unfairly and gives away a free kick. Direct free kick taken by Frank Lampard.89:56
Florent Malouda decides to take a short corner.89:28
Short corner worked by Florent Malouda.88:28
Gareth Barry concedes a free kick for a foul on Mikel. Jose Bosingwa takes the free kick. Free kick awarded for an unfair challenge on Didier Drogba by Pablo Zabaleta. Ramires restarts play with the free kick.87:11
Petr Cech restarts play with the free kick.87:11 Substitution
Substitution Mikel on for Daniel Sturridge.87:11
Mario Balotelli concedes a free kick for a foul on Oriol Romeu.85:33
Jose Bosingwa challenges Mario Balotelli unfairly and gives away a free kick. James Milner delivers the ball from the free kick right-footed from left wing.84:32 Substitution
Substitution (Man City) makes a substitution, with Edin Dzeko coming on for Joleon Lescott.83:19 Substitution
Substitution Florent Malouda comes on in place of Juan Mata.82:56
Daniel Sturridge provided the assist for the goal.82:46 Goal scored
Goal! - Frank Lampard - Chelsea 2 - 1 Man City Frank Lampard scores a power penalty. Chelsea 2-1 Man City.81:09
Daniel Sturridge takes a shot. Blocked by Joleon Lescott. The referee gives a against Joleon Lescott for handball.79:44
Ramires takes a shot. Save by Joe Hart.78:44
Juan Mata concedes a free kick for a foul on Nigel De Jong. Joleon Lescott restarts play with the free kick.77:40
Joleon Lescott takes the free kick.77:40 Booking
Booking Didier Drogba goes into the book.
Pablo Zabaleta fouled by Didier Drogba, the ref awards a free kick.76:12
Jose Bosingwa fouled by Gareth Barry, the ref awards a free kick. Direct free kick taken by Jose Bosingwa.74:06
Pablo Zabaleta takes the free kick.74:06 Substitution
Substitution David Silva goes off and Nigel De Jong comes on.74:06 Booking
Booking Ramires receives a yellow card.73:54
Mario Balotelli fouled by Ramires, the ref awards a free kick.73:30
Centre by Juan Mata. The ball is sent over by Jose Bosingwa, Vincent Kompany manages to make a clearance.72:34 Substitution
Substitution Frank Lampard is brought on as a substitute for Raul Meireles.72:25
Shot from just outside the box by Daniel Sturridge misses to the right of the target.71:10
Foul by Jose Bosingwa on Mario Balotelli, free kick awarded. Direct free kick taken by Pablo Zabaleta.70:43
The ball is delivered by Jose Bosingwa, Joleon Lescott manages to make a clearance. Ashley Cole sends in a cross, Pablo Zabaleta makes a clearance.70:22
The ball is delivered by Jose Bosingwa, clearance made by Vincent Kompany.67:46
Mario Balotelli takes a shot. Save by Petr Cech.66:47
Jose Bosingwa crosses the ball, Vincent Kompany makes a clearance.65:01
David Silva concedes a free kick for a foul on Juan Mata. Raul Meireles takes the direct free kick.64:05
Unfair challenge on Ramires by Mario Balotelli results in a free kick. Branislav Ivanovic restarts play with the free kick.63:09
Joe Hart takes the direct free kick.63:09 Substitution
Substitution Kolo Toure is brought on as a substitute for Sergio Aguero.63:09 Booking
Booking Oriol Romeu is cautioned.63:03
Oriol Romeu concedes a free kick for a foul on Mario Balotelli.62:47
Ramires takes a shot. Blocked by Didier Drogba.61:00
Daniel Sturridge takes a short corner. Juan Mata crosses the ball, clearance by Pablo Zabaleta. Foul by Sergio Aguero on Oriol Romeu, free kick awarded. Didier Drogba takes the free kick.57:30
Didier Drogba produces a shot on goal direct from the free kick.57:30 Dismissal
Dismissal Gael Clichy is shown a red card for second bookable offence.57:13
Free kick awarded for a foul by Gael Clichy on Ramires.56:36
Foul by Mario Balotelli on Daniel Sturridge, free kick awarded. Jose Bosingwa restarts play with the free kick.52:34
Vincent Kompany gives away a free kick for an unfair challenge on Juan Mata. Didier Drogba takes the free kick.49:43
Sergio Aguero challenges Ashley Cole unfairly and gives away a free kick. Petr Cech takes the free kick.48:38
Daniel Sturridge crosses the ball, Joleon Lescott makes a clearance.46:42
Daniel Sturridge takes a shot from just inside the penalty box which clears the crossbar.46:12
Juan Mata restarts play with the free kick.46:12 Booking
Booking Gael Clichy is cautioned by the ref for unsporting behaviour.46:09
Gael Clichy challenges Daniel Sturridge unfairly and gives away a free kick.45:01
The second half has started.45:00 +2:03 Half time
Half Time The ref blows to signal half-time.45:00 +1:19
Sergio Aguero takes a shot from 12 yards. Petr Cech makes a save.45:00 +0:38
Raul Meireles challenges Gnegneri Toure Yaya unfairly and gives away a free kick. Vincent Kompany takes the direct free kick.43:08
The ball is sent over by Ramires.40:30
Juan Mata restarts play with the free kick.40:30 Booking
Booking Booking for Vincent Kompany.40:26
Unfair challenge on Didier Drogba by Vincent Kompany results in a free kick.39:31
The referee gives a free kick against James Milner for handball. Direct free kick taken by Petr Cech.38:39
Sergio Aguero is ruled offside. Petr Cech takes the indirect free kick.37:00
Corner taken by James Milner, Didier Drogba makes a clearance.35:09
Free kick taken by Vincent Kompany.35:09 Booking
Booking Caution for Raul Meireles.34:59
Raul Meireles gives away a free kick for an unfair challenge on Pablo Zabaleta.33:19
Daniel Sturridge provided the assist for the goal.33:19 Goal scored
Goal! - Raul Meireles - Chelsea 1 - 1 Man City Raul Meireles finds the net with a goal from inside the penalty area high into the middle of the goal. Chelsea 1-1 Man City.33:18
Daniel Sturridge crosses the ball,31:53
David Silva gives away a free kick for an unfair challenge on Ashley Cole. Ashley Cole takes the free kick.29:55
Raul Meireles challenges David Silva unfairly and gives away a free kick. Free kick taken by Gnegneri Toure Yaya.29:36
The ball is swung over by Ashley Cole, clearance by Gareth Barry.27:31
Didier Drogba produces a right-footed shot from just outside the penalty box that misses to the left of the target.24:37
Outswinging corner taken by Juan Mata, Joleon Lescott manages to make a clearance.24:14
Didier Drogba takes a shot. Save by Joe Hart.23:30
The ball is swung over by James Milner.22:28
Mario Balotelli concedes a free kick for a foul on Jose Bosingwa. Juan Mata takes the direct free kick.19:56
Gael Clichy delivers the ball.16:51
The ball is sent over by Jose Bosingwa, clearance by Joleon Lescott.16:12
The ball is crossed by Didier Drogba, Pablo Zabaleta manages to make a clearance.15:02
Free kick awarded for an unfair challenge on David Silva by Ramires. Mario Balotelli has an effort direct from the free kick.11:38
The assistant referee signals for offside against Mario Balotelli. Free kick taken by Branislav Ivanovic.10:37
Sergio Aguero produces a left-footed shot from deep inside the penalty area which goes wide of the right-hand post.9:46
Jose Bosingwa takes a shot. Gareth Barry gets a block in. Raul Meireles takes a shot. Joleon Lescott gets a block in. Corner taken short by Juan Mata.9:24
Juan Mata delivers the ball, clearance by Joleon Lescott.9:00
Mario Balotelli takes a shot. Blocked by John Terry.8:35
Long distance shot from Sergio Aguero misses to the left of the goal.7:58
Free kick awarded for an unfair challenge on Gael Clichy by Ramires. Joe Hart restarts play with the free kick.5:01
The offside flag is raised against Gael Clichy. Petr Cech takes the free kick.3:57
Effort from outside the penalty area by Raul Meireles goes wide left of the target.1:38
Assist by Sergio Aguero.1:38 Goal scored
Goal! - Mario Balotelli - Chelsea 0 - 1 Man City Mario Balotelli grabs a goal from close range to the bottom right corner of the goal. Chelsea 0-1 Man City.0:35
Unfair challenge on Ashley Cole by David Silva results in a free kick. Free kick taken by Juan Mata.0:00
The match gets underway.
Live data and text provided by our data suppliers