Manchester City have thrown away a one-goal lead to lose 3-2 to Crystal Palace, leaving them four points off Premier League leaders Liverpool at Christmas.
The Citizens had not previously dropped a single point in their nine home games this season, but Palace stunned the champions with an unlikely turnaround at the Etihad Stadium.
Jeffrey Schlupp cancelled out an early opener from Ilkay Gundogan and Andros Townsend then put the Eagles in front through a sensational long-range volley after City failed to clear their lines, before Luka Milivojevic converted from the spot to give his side some breathing space.
Substitute Kevin De Bruyne set up a tense finale with his fluked finish, but Pep Guardiola's men left themselves with too much to do as they ceded further ground in the title race.
The early signs suggested that it would be another comfortable afternoon for City, who had won 10 of their last 12 Premier League matches against Palace overall and 10 in a row on home soil in all competitions ahead of this latest tussle.
Gundogan ghosted in at the far post, profiting from some sloppy marking from Patrick van Aanholt, to head stand-in skipper Fabian Delph's diagonal delivery past Vicente Guaita.
Delph had earlier had a long-range drive tipped over by Guaita and both Raheem Sterling and Bernardo Silva also came close to netting, but a dominant City were left stunned when Palace netted twice in the space of two minutes and 42 seconds.
After being given the chance to get a shot away by Kyle Walker, returning winger Schlupp drilled the ball across Ederson and into the far corner.
Conceding for the eighth match running may have left City's players rattled, but worse was to come as Townsend scored a real contender for goal of the season, finding the back of the net from all of 35 yards with his volley to put his side in front.
City, who had not dropped points all season after taking the lead in a match, took time to regain any momentum after that second setback of the match.
Guardiola turned to Sergio Aguero five minutes into the second half and, within seconds of the fit-again striker's introduction, Aymeric Laporte powered a header wide from a corner.
The game's pivotal fourth goal would go the way of the visitors, though, as Walker tripped Max Meyer as the German was about to get on the end of a loose ball after Townsend's header hit the inside of the post.
Milivojevic stepped up from the spot and converted to Ederson's left, all but ending City's run of 36 matches without defeat in the traditional Saturday 3pm slot in the process.
Despite also chucking on De Bruyne and Riyad Mahrez for the final half an hour, the best City could manage over the next 20 minutes was a long-range free kick from Sane that hit the outside of the post.
De Bruyne did pull one back for the champions five minutes from time, though, picking out the top corner from his intended cross that caught out Guaita.
There was to be one final big chance for City to at least salvage a point, only for Gabriel Jesus to head over the bar from a glorious position once picked out by De Bruyne, meaning a second defeat in three league matches for the home side.
MANCHESTER CITY (4-3-3): Ederson; Walker, Otamendi (Aguero 50'), Laporte, Delph (De Bruyne 62'); Gundogan, Stones Bernardo; Sterling (Mahrez 69'), Jesus, Sane
CRYSTAL PALACE (4-4-2): Guaita; Wan-Bissaka, Tomkins, Sakho, Van Aanholt; McArthur, Milivojevic, Meyer (Puncheon 95'), Schlupp; Townsend, Zaha (Ayew 88')