City took the lead just before half-time when Chelsea defender Gary Cahill put the ball beyond Thibaut Courtois and into his own net.
But the visitors levelled through Diego Costa on the hour, the striker then turning provider for William, who scored after a counter-attack at breakneck speed from Chelsea before Eden Hazard’s late goals secured all three points.
City star Kevin De Bruyne missed an open goal from point-blank range with his side leading 1-0, with the midfielder’s miss proving costly as Chelsea staged their smash and grab win.
The home side paid the price for some inept defending, particularly from Nicolas Otamendi, and have now failed to win any of their last four Premier League home games.
In an appalling finale, City had Aguero and Fernandinho sent off, as a mass brawl broke out following the former’s late lunge on David Luiz.
Both sets of players became embroiled in an ugly melée, with ref Anthony Taylor dismissing both City men as the ugly scenes unfolded.
Aguero could now be looking at a four-game ban, having already been sent off once this season.
The City forward will be hit with a straight three-match ban, which could be extended because of his earlier dismissal against West Ham, a retrospective punishment following trial by TV.
Here are five things we learned from the lunchtime kick-off at the Etihad Stadium…
1. City need to strengthen in January
With skipper Vincent Kompamy plagued by injury, and Nicolas Otamendi and John Stones looking uncertain and vulnerable with every game, City have to buy a defender in January.
Stones was caught out defensively on a couple of occasions early on, while Otamendi was at fault for both of Chelsea’s goals.
Guardiola must accept he has to buy in January if City are to have any chance of winning the title.
2. Luiz lucky to stay on
David Luiz knew exactly what he was doing when he body-checked Sergio Aguero as the City forward chased down Cesar Azpilicueta’s under-hit back-pass just before the half-hour.
Somehow, Luiz got away with the blatant foul, which could have earned him a red card as he looked to be the last man.
Ref Anthony Taylor looked to go to his pocket for a card, before seemingly changing his mind.
Aguero was dismissed in stoppage time after exacting his revenge on the defender – revenge, perhaps, for their 2013 meeting?
3. Fabregas peripheral until key assist
With Nemanja Matic out with a muscle problem, Cesc Fabregas was handed his first appearance since Chelsea’s 3-0 drubbing at Arsenal back in September.
It was a chance for Fabregas to show he can still perform when called upon, but he struggled defensively, although it was his his fine ball through to Costa that saw Chelsea equalise.
4. Cahill atones for own goal.
No player has scored more Premier League goals against Chelsea keeper Thibaut Courtois than team-mate Gary Cahill, who turned the ball into his own net here.
Cahill has netted twice against Courtois, along with nine other Premier League players.
But Cahill did atone for his blunder by clearing an Aguero shot off the line just after the break, which kept the game alive for Chelsea.
5. De Bruyne miss proves costly
Kevin De Bruyne has been arguably City’s player of the season, with his goals and assists, but he produced a contender for miss of the season in the 56 minute.
After a wonderful counter-attack involving David Silva and Jesus Navas, all De Bruyne had to do was steer the ball in, but he managed to miss, clipping the bar.