Raheem Sterling put City in control with a double and although Luka Milivojevic halved the deficit with nine minutes remaining, a late third from Gabriel Jesus ensured that Pep Guardiola's team moved back to the top of the standings ahead of Liverpool's meeting with Chelsea.
City went onto the front foot soon after kickoff, but it was Palace who created the first opportunity of the contest as Milivojevic fired a long-range strike over the crossbar.
However, City soon found their rhythm in attack with Palace struggling to deal with the movement of David Silva, and the visitors should have moved in front when Sterling scuffed an effort wide from eight yards after being picked out by the Spaniard.
The winger managed to redeem himself before the quarter-hour mark. Kevin De Bruyne threaded a pass through the Palace backline, and Sterling held off the attention of a defender before finding the far top corner from an acute angle.
City remained on the offensive as the first half progressed, with Sergio Aguero seeing a shot on the turn go marginally over the crossbar before Leroy Sane forced a smart stop out of Vicente Guaita at the near post.
Guardiola's team went in search of a second after the restart, and Guaita had to react well in order to prevent Scott Dann from diverting a De Bruyne cross into his own net.
The visitors were struggling to create clear-cut chances, but it was Sterling who again came up with the clinical touch to double his team's advantage.
Sane's miscued effort from the left-hand side of the area went into the path of Sterling, who managed to find the far bottom corner from six yards with Guaita unsighted by one of his defenders.
Palace improved after going further behind - although that was partly due to City dropping deeper - but each of Christian Benteke and Dann failed to do better with half chances from distance.
City were in cruise control as the match entered the closing 15 minutes, but Palace got themselves back into the contest when Milivojevic found the bottom corner of Ederson's net with a 20-yard free kick.
Guardiola had been left furious on the City bench, and the Spaniard made the decision to introduce John Stones in order to cope with Palace's growing threat in the final third.
However, City were able to confirm the three points in the final minute of normal time as Jesus powered a shot inside of the near post from 12 yards, with De Bruyne capping a fine individual display with his second assist of the afternoon.
CRYSTAL PALACE (4-3-3): Guaita; Wan-Bissaka, Kelly, Dann, Van Aanholt; McArthur (Sako 85'), Milivojevic, Schlupp (Kouyate 22'); Townsend (Meyer 77'), Benteke, Zaha
MANCHESTER CITY (4-3-3): Ederson; Walker, Kompany, Laporte, Mendy; De Bruyne, Gundogan, D.Silva (B.Silva 65'); Sterling, Aguero (Gabriel Jesus 75'), Sane (Stones 87') body check tags ::