Luka Milivojevic was presented with the chance to seal a memorable victory for Roy Hodgson’s relegation-threatened side when Wilfried Zaha was brought down by Raheem Sterling in injury time.
But the Palace midfielder struck his spot-kick too close to Ederson, allowing the City goalkeeper to preserve his side’s 21-game unbeaten start to the league campaign.
City’s failure to score in a league game for the first time since last April meant they fell short in their bid to equal Bayern Munich 19-game winning run of four years ago, the longest in Europe’s five major leagues, set under their current boss Pep Guardiola.
And City’s afternoon was further soured when Kevin De Bruyne was stretchered off immediately after the spot-kick following an ugly challenge by Palace substitute Jason Puncheon.
Guardiola, who also said forward Gabriel Jesus was likely to be out for up to two months after an injury early in the game, called for referees to take firm action.
– No ‘magic formula’ –
“Please, referees, they have to protect players,” he said. “We were lucky against Tottenham and against Newcastle. Today we were not lucky.
“Referees have to protect. We know how strong physically it is England but teams miss big players, not just Manchester City. The replay speaks for itself. We have to protect players.”
Hodgson claimed before the game there was “no magic formula” to competing with City, insisting his Palace side’s hopes of getting something from the game hinged on working hard and defending well while maintaining an attacking threat.
The manager could be satisfied that during the opening 45 minutes his players stuck to the prescribed plan to the extent that by the half-time break, the frustration among Guardiola’s players was obvious.
There was an early sign the visitors might not be at their best when a breakdown in communication between Eliaquim Mangala and Ederson led to the goalkeeper directing an attempted clearance against his centre-back, presenting Christian Benteke with an opportunity that he could not take.
Both sides were forced into early changes, with Palace captain Scott Dann being stretchered off in the 19th minute and City striker Jesus following shortly afterwards.
The subsequent reshuffle appeared to affect the visitors more, with Palace growing more into the game the longer the half went on.
Sergio Aguero, Jesus’s replacement, struck the post in the 28th minute with a deflected shot from the edge of the penalty area but that proved to be a rare moment of concern for home goalkeeper Wayne Hennessey.
And while Palace were unable to carve out many clear chances at the other end, Wilfried Zaha was a constant threat down the Palace left, frequently getting the better of City right-back Kyle Walker.
An animated conversation between De Bruyne and Leroy Sane confirmed the sense that City were growing increasingly uncomfortable.
Palace found it far harder to be as expansive after the restart, when City finally began to move through the gears.
But Hennessey proved equal to the task, blocking Leroy Sane’s close-range volley at the far post and denying De Bruyne as City struggled to find openings in a well-drilled Palace backline.
And they should have entered the final 14 minutes of the game needing a goal to get back on level terms after Andros Townsend missed the home side’s best chance of the half before Milivojevic was handed his late opportunity to clinch the points.
Download our app and read this and other great stories on the move. Available for Android and iOS.