Erling Haaland scored a clinical hat-trick - his first goals at The Etihad Stadium - as Manchester City produced yet another stirring comeback.
Trailing 2-0 for the fourth time in six matches, City rallied once Bernardo Silva pulled a goal back at the start of the second half and then Haaland showed his class with a powerful equalising header before tapping in to give his side the lead and then completing an 19-minute treble.
Palace, who were without Wilfried Zaha, had earlier stung the champions by racing into a comfortable lead inside the opening 21 minutes with a John Stones own goal and header from Joachim Andersen.