A superb volley by Andros Townsend helped Crystal Palace stun Manchester City, handing the champions a first home defeat of the season.
City dominated early on and Ilkay Gundogan put them ahead on 27 minutes with a header from Fabian Delph's cross.
But by 35 minutes the match had turned on its head as Jeffrey Schlupp equalised then Townsend hit a stunning left-foot volley from outside the penalty area.
Luka Milivojevic made it 3-1 from the penalty spot six minutes into the second half after a foul by Kyle Walker on Max Meyer.
Kevin De Bruyne pulled a goal back in the 85th minute with a cross that looped into the far corner.
But Palace held on and, 28 years to the day since Palace last won at City, they climb a place to 14th, on 18 points.
City stay second, but now four points behind Liverpool.
See: Man City report | Crystal Palace report
Next fixtures:
Man City: 26 Dec v Leicester City (A)
Crystal Palace: 26 Dec v Cardiff City (H)
See: Play for your club in the ePremier League (UK residents aged 16+ only)
WHO'S GOING TO BE YOUR
MAN OF THE MATCH?
Vote at Full-time