Luka Milivojevic had a stoppage-time penalty saved as Crystal Palace missed the chance to halt Manchester City's unbeaten start to the season, although the Premier League leaders' winning run has been stopped at 18 matches following the goalless draw at Selhurst Park.
Pep Guardiola's men went into the match one win away from equalling the record for successive wins in Europe's top five leagues - set by the Catalan's Bayern Munich side - but they were ultimately frustrated by a well-drilled Palace side who were only denied all three points by Ederson's heroics at the end.
City showed two sides to their game in the first half, as they created a few good chances with some expansive football - Bernardo Silva and Sergio Aguero going particularly close, with the latter introduced midway through the half for the injured Gabriel Jesus.
But there was also palpable frustration on show, with Kevin De Bruyne and Leroy Sane, who was booked for petulantly kicking the ball away at the end of a poor first half, involved in a verbal disagreement at one point.
City appeared more switched on again after Raheem Sterling's introduction from the bench in the 57th minute, adding a little extra spark to their attacks and setting Sane up for a great chance.
But it was Palace who came closest to clinching the win following a Sterling foul on Wilfried Zaha, but Ederson was equal to Milivojevic's effort from the spot, leaving City 14 points clear of Chelsea.
City were quick out of the blocks at Selhurst Park and almost took the lead after just two minutes, as De Bruyne found Silva at the back post and the playmaker sliced an effort just wide of the bottom-left corner.
The visitors nearly gifted Palace an opener shortly after, though, when Ederson dropped the ball on the edge of the area and needed Eliaquim Mangala to make a vital block to deny Christian Benteke a first home Premier League goal since May.
City then suffered the blow of losing a tearful Jesus to injury in the 23rd minute after overstretching.
But his replacement, Sergio Aguero, went close shortly after coming on, seeing a shot deflect off a defender and strike the post.
Hints of frustration started to show in the City team the longer the first half remained goalless, with Sane and De Bruyne arguing just before the break after the two were on different wave lengths in the final third.
Chances remained at a premium after the break, with Ilkay Gundogan's curling effort that went just wide in the 56th minute - a few moments before his withdrawal for Sterling - the only opportunity in the quarter-of-an-hour that followed half-time.
Sterling did make a difference, though, and almost set up Sane for the opener just after the hour when he played a cross to the back post and Wayne Hennessey denied the German from point-blank range.
A similarly brilliant opportunity fell to Andros Townsend 12 minutes from time, but the winger sliced over from 10 yards when assisted by the lively Zaha.
Palace should have then finished City off right at the end when Zaha was sent tumbling by Sterling inside the penalty area, but Ederson saved Milivojevic's spot-kick with ease to preserve the visitors' unbeaten run and spare their blushes.
Key Opta stats:
- Manchester City failed to win a Premier League game for the first time since August, bringing an end to their 18-game winning run.
- This was City’s first away goalless draw in the Premier League since March 2016 against Norwich City, ending a run of 34 matches in which at least one goal was scored.
- Only two teams have won more Premier League points in a calendar year than Man City in 2017 (98) – Man Utd in 1993 (102) and Chelsea in 2005 (101).
- Crystal Palace have only lost one of their last 10 Premier League games (W3 D6), having lost 13 of their 16 before this run.
- Roy Hodgson has now failed to see his side score in his last five Premier League matches against Man City (D2 L3), a goalless run that stands at 465 minutes.