Manchester City suffered their first Premier League defeat of the season as N'Golo Kante and David Luiz secured a hard-fought 2-0 victory for Chelsea at Stamford Bridge.
The reigning champions were on top from the outset, but Pep Guardiola's decision to play Raheem Sterling through the middle in the absence of the injured Sergio Aguero failed to pay dividends and they were unable to regain top spot from Liverpool, who beat Bournemouth 4-0 earlier in the day to edge a point clear.
Chelsea were forced to sit deep for much of the opening period before Kante scored with their first shot on target in the 45th minute.
Maurizio Sarri's team were well-drilled in the second half and a 78th-minute header from David Luiz sealed a huge victory after a run of just one win in four.
Chelsea tried to press the visitors high from kick-off, but Guardiola's side were capable of passing their way out of any situation and they dictated terms.
However, it was not until the 33rd minute that City truly threatened, Sterling turning Marcos Alonso easily and finding Leroy Sane for a shot that deflected over off Cesar Azpilicueta.
Chelsea then punished City against the run of play on the stroke of half-time with a swift break, Kante firing into the roof of the net after he was teed up by Eden Hazard, who led the line ahead of Alvaro Morata and Olivier Giroud.
The Blues carried the momentum into the second period and Willian had a free-kick pushed away by Ederson, with Guardiola responding by sending Gabriel Jesus on for Sane.
Kepa Arrizabalaga parried a free-kick from Kyle Walker as City, who saw David Silva hobble off with an injury in the 68th minute, laboured in their search for an equaliser.
David Luiz ensured the visitors' 14-game unbeaten run in away Premier League matches was ended when he beat John Stones to Hazard's corner - which Guardiola was adamant was incorrect to award - and looped a header beyond Ederson.
What does it mean? Chelsea cannot be counted out
After results earlier in the day sent Chelsea down to fifth, the Blues climbed back up to third and moved within eight points of Liverpool in top spot. Sarri's men showed grit and resilience to keep City at bay during the opening period, and their increased confidence steeled them to hold onto the points with a well-organised closing 45 minutes. Their fellow title hopefuls will no doubt take notice.
David Luiz key at both ends
City's early pressure looked certain to culminate in a goal, but a brilliant tackle from David Luiz denied Sane a great opportunity to open the scoring in the 15th minute. The Brazil defender has been inconsistent this season, but he remained solid in the second period and nodded home late on to seal what had initially appeared an unlikely victory.
Guardiola's Sterling choice fails
With Aguero still sidelined due to a muscle injury and Jesus out of form, Guardiola decided to play Sterling through the middle. However, the England international still spent most of his time playing from the right as City's attack lacked cohesion despite them being on top for prolonged periods. Guardiola changed things in the 53rd minute and Sane can consider himself unfortunate he was the one hooked, while Jesus did not test Kepa until second-half stoppage-time.
City will be out to wrap up top spot in UEFA Champions League Group F when they host Hoffenheim on Wednesday evening (Thursday morning AEDT), while Chelsea will take on Vidi in the UEFA Europa League 24 hours later.