Crystal Palace halted Manchester City's pursuit of a record-equalling 19th successive league victory by holding them to a 0-0 draw at Selhurst Park.
On only the second occasion this season that City have dropped points in the Premier League, they were even fortunate to avoid defeat to opponents they beat 5-0 in September after Luka Milivojevic missed a late penalty.
Their 18 consecutive victories already represented a Premier League record, but Palace's resilience means they fell one short of the European record set by Bayern Munich, also then managed by Pep Guardiola, in 2014.
Despite their inability to score in the league for the first time this season, City remain in first place and 14 points ahead of Chelsea, their closest challengers.
Their frustrations against a team that remains threatened by relegation and in 17th place likely represents only a blip in what is still expected to prove a remarkable season.
After a promising start - despite Raheem Sterling's presence among the substitutes - and an injury that cost them Gabriel Jesus from the 23rd minute, City began to struggle for their usual fluency.
Palace's Patrick van Aanholt tested Ederson with a powerful strike from 25 yards that forced the goalkeeper to tip wide, but the visitors otherwise frequently stretched Roy Hodgson's team and were a constant threat on the counter.
Scott Dann cynically brought down Kevin De Bruyne on the edge of the area in the 19th minute, despite having so little chance of winning the ball, and hurt himself making the challenge. The stand-in captain had to be taken off on a stretcher, and replaced by Martin Kelly, a full-back playing out of position in central defence.
When De Bruyne then fed Jesus, who turned on the edge of area before seeing his low shot comfortably saved by the recalled Wayne Hennessey, it seemed a further sign of their growing momentum but instead proved the opposite.
Jesus was almost immediately afterwards substituted in tears, and though Sergio Aguero then came on their goal-threat was not the same thereafter.
The normally devastating understanding between De Bruyne and Leroy Sane was tested by a misplaced pass, and when the Belgian cut back to Aguero in front of goal on the stroke of half-time, he watched the striker shoot wide.
Sterling and Yaya Toure were introduced as second-half substitutes, but amid the hosts' conviction and organisation, only with a half-volley from Sane that struck Hennessey in the face did they come close to scoring.
The in-form Wilfried Zaha created a fine chance for Andros Townsend directly in front of goal with a low cross the winger wasted by shooting harmlessly high and wide, and was then brought down by Sterling in the area.
He had already appeared to have been fouled outside of the area when he went down inside it under Sterling's challenge, but when Jonathan Moss harshly pointed to the penalty spot, City were not punished.
Milivojevic unconvincingly struck his effort down the centre of Ederson's goal, leaving the Brazilian with a comfortable save and ensuring that even if City's winning run was coming to an end, they remain undefeated in the league.