The first effort of the came when Ferran Torres dispossessed Andreas Christensen and drove forward. Aguero was up with him. but the youngster opted to go himself; it was a poor decision.
Chelsea soon began to assert themselves, picking off the space left by City, who left Rodri badly exposed in the middle of the park.
With half time approaching, Hakim Ziyech forced Ederson into a good save, before Antonio Rudiger shot over after play was recycled.
'No one more disappointed than Aguero' - Guardiola after City loss
The Blues were punished at the other end, just a minute before half time, when Christensen was caught again. He appeared to pull his hamstring as Gabriel Jesus squared for Sergio Aguero, but after a poor touch from the Argentine, Raheem Sterling tapped into the gaping net.
Aguero's misery was compounded just seconds later when, after Jesus was fouled by Billy Gilmour in the area, he stepped up for a penalty. Edouard Mendy stood tall to save his panenka effort, much to the disgust of Pep Guardiola.
Buoyed by that let-off, Chelsea grew into the game again after the break. Reece James began causing City problems down their left-hand side and Ziyech tested Ederson from distance again.#
Just three minutes past the hour, the former Ajax midfielder levelled the scores with a driven effort. Ederson couldn't stop it, and it forced City into a rethink. Phil Foden and Ilkay Gundogan were summoned from the bench not long after.
City looked disjointed as the game went on, though, and it was Chelsea who won it in stoppage time when Marcos Alonso scuffed Werner's cross into the net.
'We never stopped attacking' - Tuchel delighted as Chelsea beat City
TALKING POINT - Manchester City's title celebrations postponed
It was supposed to be last week had Liverpool played, and won, at Manchester United. Then it was supposed to be in their own hands today. But City didn't deserve it. The penalty miss saw Chelsea raise their game, and the home side just didn't have their usual fluidity. The title will come, but more worrying is the fact that Chelsea have beaten them twice ahead of the big game in Istanbul.
MAN OF THE MATCH - Reece James (Chelsea)
James was the symbol of Chelsea's second half resurgence. Everything came down his side and he gave Benjamin Mendy a torrid time. Every cross was pinpoint, and he helped put the City backline under pressure. A splendid performance.
Manchester City: Ederson 6, Mendy 6, Laporte 7, Dias 7, Ake 6, Cancelo 6, Rodri 6, Sterling 7, Torres 7, Jesus 6, Aguero 5 Substitutes: Foden 5, Gundogan, Zinchenko n/a
Chelsea: Mendy 7, Alonso 6, Christensen 5, Rudiger 6, Azpilicueta 6, James 8, Gilmour 6, Ziyech 7, Kante 6, Pulisic 6, Werner 7 Substitutes: Zouma 7, Jorginho 6, Hudson-Odoi 6
44' - GOAL! Sterling scores. 1-0 City. Jesus beat Christensen to the ball, squaring to Aguero. The England winger took it on and finished.
45' - PENALTY MISS! Gilmour fouls Jesus in the area. Aguero tries a panenka, which Mendy reads. Still 1-0.
63' - GOAL! Ziyech finally finds his range. Chelsea have their reward for a strong start to the second half. 1-1.
90' + 2 - GOAL! Chelsea have won it! Alonso!
Manchester City have now conceded two or more goals in four consecutive home league games for the first time since 1978.