N’Golo Kante gave Chelsea the lead on the stroke of halftime scoring with the Blues’ first shot of the game, and David Luiz headed in a second 12 minutes from time.
City had been unbeaten in 21 games since April’s defeat in the Manchester derby, and now sit a point behind Liverpool.
“We played with very good application, determination and the right level of aggressiveness. Now, my players have to continue like this,” Chelsea manager Maurizio Sarri said.
Chelsea had lost to Tottenham and Wolves in their prior three league games, with many anticipating a heavy defeat to City.
And the visitors should have led after nine minutes when Raheem Sterling, seeking a goal on his 24th birthday, snatched at a chance, shooting straight at Kepa Arrizabalaga.
They crafted another opportunity when Sterling sauntered past Marcos Alonso and his ball found its way to Leroy Sane, whose effort was blocked by Cesar Azpilicueta.
Chelsea then struck on the counter-attack, Willian finding Eden Hazard, whose fine cross allowed the late-arriving Kante to strike second league goal of the season.
Guardiola reacted after the break, sending on Gabriel Jesus for Sane, as his team pressed Chelsea deep into their own half once more.
But Chelsea continued to stand firm - before scoring a second. Hazard’s inswinging set-piece was met by Luiz, who rose highest to send a looping header into the far corner of the net.
City boss Guardiola felt his side had played “incredible” during the first half, but without reward.
“Everyone wants to beat us. We still have a lot of points to gain and a lot of games to play,” he said.
“We have to be consistent and today we were, so I have no problems with that.”
Chelsea had been run ragged by a clearly superior City side until Luiz produced a pinpoint 50-metre pass to Pedro in the 44th minute on Saturday. Pedro found Willian and the ball fell to Eden Hazard who sent it across goal where Kante thumped it into the back of the net.
It was the Frenchman’s first goal since the first game of the season and Chelsea’s first shot on target.
Luiz headed home Chelsea’s second in the 78th minute from a corner by Hazard, the ball looping into the net past the stranded Ederson to confirm City’s first league defeat since April.
City arrived at Stamford Bridge after seeing their closest title rivals Liverpool leapfrog them with a thumping 4-0 win at Bournemouth. Chelsea climbed to third on goal difference with Tottenham Hotspur set to play Leicester City later on Saturday.