Gabriel Jesus’ 50th Manchester City goal and David Silva’s strike in the first half ensured the champions returned to second place on the table but remain five points behind Liverpool, who travel to Old Trafford on Sunday.
Wayne Hennessey in the Crystal Palace goal was called into action in the 22nd minute, as he blocked Ilkay Gundogan’s curled effort with his knee.
Palace made the champions wait for their opener and it eventually arrived in the 39th minute when Gabriel Jesus, in from the start ahead of Sergio Aguero, got in front of his marker and flicked Bernardo Silva’s cross into the far corner.
Manchester City went further ahead in a trice as just 93 seconds later captain David Silva got on the end of Raheem Sterling’s lofted pass to fire home through the legs of Hennessey.
Hennessey came to Palace’s rescue again in the 68th minute to foil Jesus’ bending effort headed for the far corner before the Welsh goalkeeper reacted superbly to push over Bernardo Silva’s goal-bound effort five minutes later.
Substitute Christian Benteke powered a corner against the City woodwork after 77 minutes and from the counter Jesus’ shot was pushed behind by Hennessey, when the perhaps the Brazilian should have passed to an unmarked Kevin de Bruyne.
De Bruyne flicked a header against the post from a Bernardo Silva cross in the 81st minute before Ederson reacted superbly to stop Wilfried Zaha’s powerful strike with a minute to end proceedings.