Manchester City goalkeeper Ederson saved a 90th-minute penalty as Crystal Palace ended City's 18-game Premier League winning run in a dramatic 0-0 draw at Selhurst Park.
The penalty came when Wilfried Zaha was adjudged to have been brought down by Raheem Sterling and the referee Jon Moss pointed to the spot -- but Ederson kept out Luka Milivojevic's unconvincing effort.
Palace produced an outstanding performance to limit the chances City were able to create, but the runaway leaders -- who lost both Gabriel Jesus and Kevin De Bruyne to injuries -- almost made a perfect start when Bernardo Silva shot just wide with four minutes gone.
But the league leaders showed vulnerability as the game approached the 10-minute mark when Christian Benteke had a shot blocked after Ederson had hit a teammate with his attempted clearance.
City striker Gabriel suffered an injury as he pursued a pass soon afterwards but was able to continue after treatment, and moments later City were under pressure again as a deflected Patrick van Aanholt effort flew wide.
Palace had to replace defender Scott Dann with Martin Kelly after Dann was hurt as he brought down De Bruyne, and City had to make a substitution with 22 minutes gone as Gabriel went down again and this time could not continue.
The forward was tearful as he left the pitch to be replaced by Sergio Aguero, who came within a whisker of opening the scoring when his deflected 28th-minute effort cannoned off a post with keeper Wayne Hennessey beaten.
Benteke headed wide from a Yohan Cabaye corner as Roy Hodgson's Eagles continued to ask questions of City, whose frustration showed as Leroy Sane went into the book for kicking the ball away.
In a scrappy start to the second half, Van Aanholt was booked for a challenge on Bernardo Silva, but as the hour approached the leaders were close to breaking through when Ilkay Gundogan exchanged passes with De Bruyne and curled an effort wide.
Guardiola replaced Gundogan with Sterling soon afterwards as he looked to inject more urgency, and Sterling was soon involved in a move that ended when Aguero's header was gathered by Hennessey, who denied Sane soon after.
Cabaye went into the book for a challenge on Sane that gave City a dangerous free kick but De Bruyne's effort hit the Palace wall.
As the game moved towards its final quarter of an hour, Palace boss Hodgson brought Jason Puncheon into the action in place of Cabaye.
With 78 minutes gone, Puncheon's shot was blocked and, when Zaha crossed low from the right, Andros Townsend blazed over from close range.
Aguero was booked for not retreating at a Palce free kick from which James Tomkins headed wide, and at the other end De Bruyne had an effort cleared by Kelly before City brought on Yaya Toure for Bernardo Silva.
After Palace had missed their late chance from the spot, Sane broke for City and was fouled by Kelly, who was booked.
There was then a lengthy delay as Puncheon fouled De Bruyne. The wild challenge, for which the Palace man was booked, hurt both players, who were stretchered off after treatment.