City were attempting to win their 20th league match of the season, but it was Palace that ultimately passed up the best opportunity to claim all three points as Luka Milivojevic missed a 92nd-minute penalty for the home side.
Palace boss Roy Hodgson made four changes to the team that started against Arsenal on Thursday night, with Wayne Hennessey, Timothy Fosu-Mensah, Patrick van Aanholt and Jairo Riedewald coming into the XI.
As for City, Pep Guardiola made three changes to the team that started against Newcastle United on Wednesday night. Eliaquim Mangala replaced the injured Vincent Kompany at the back, while Leroy Sane and Gabriel Jesus took the places of Raheem Sterling and Sergio Aguero in the final third.
Bernardo Silva had a decent chance for the away side in the early exchanges, but the Portuguese missed the far post with an effort from inside the Palace box.
Van Aanholt then forced a smart save from Ederson moments later as the home side continued to press.
Both teams lost players to injury in the period that followed, with Scott Dann being stretchered off for Palace before Jesus was forced to leave the field in the 23rd minute.
James Tomkins almost turned into his own net in the 25th minute as City pressed, before Aguero saw a strike deflected onto the Palace post during a difficult period for the home side.
The Eagles were causing problems down the other end, however, with Zaha having plenty of joy against Kyle Walker. The former Manchester United forward set up Andros Townsend with a low cross 10 minutes before the break, but the attacker saw his effort blocked by Mangala.
City were off-colour in the first 45 minutes as a series of fairly straightforward passes were over-hit, and Palace certainly deserved to enter the half-time interval on level terms.
After a fairly uneventful start to the second period, Guardiola introduced his leading scorer in the 57th minute as Sterling replaced Gundogan, who had just sent a curling effort wide of the Palace post.
Aguero then had a half-chance for the away side as he met a cross from Bernardo Silva, but Palace goalkeeper Hennessey was on hand to keep out the Argentine's headed effort.
Hennessey made an even better save to keep out a close-range strike from Sane just past the hour during a period where the away side were forcing the issue in the final third of the field.
De Bruyne was next to test Palace's goalkeeper 20 minutes from time, but the Welshman made another smart stop.
Townsend had a stunning chance for Palace in the 78th minute after meeting a low cross from Zaha, but the attacker somehow fired over the crossbar as City survived a very dangerous moment.
De Bruyne then had one blocked down the other end before Yaya Toure entered the field in City's final change.
As expected, the visitors turned the screw late on in a bid to secure all three points, but Palace were handed a golden chance to claim the win in second-half stoppage time when Sterling was adjudged to have felled Zaha inside the penalty box.
Milivojevic took the spot kick, but the midfielder saw his effort saved by Ederson. City looked to break straight away, but Jason Puncheon floored De Bruyne in an incident that ultimately saw both players stretchered off the field.
The point means that City are now 14 points clear of second-placed Chelsea, while Palace remain just outside of the relegation zone in 17th position.
Palace (4-3-3): Hennessey; Fosu-Mensah, Tomkins, Dann (Kelly 20'), Van Aanholt; Cabaye (Puncheon 75', Lee 96'), Milivojevic, Riedewald; Zaha, Benteke, Townsend
Man City (4-3-3): Ederson; Walker, Mangala, Otamendi, Danilo; Fernandinho, Gundogan (Sterling 57'), De Bruyne; B.Silva (Toure 81'), Jesus (Aguero 23'), Sane