Crystal Palace, on Sunday, became only the second team to take points off Manchester City in the English Premier League this season.
The hosts, who missed a stoppage-time penalty kick, held the runaway leaders to a 0-0 draw at Selhurst Park.
Manchester City, who drew 1-1 with Everton in August, though extended their unbeaten run to 21 matches this season.
But their winning streak was halted at 18 by a resolute Crystal Palace defence, in spite of throwing everything at them in a dominant second half.
Crystal Palace earned a penalty kick in stoppage time when Raheem Sterling brought down Wilfried Zaha but the normally reliable Luka Milivojevic had his spot kick saved by Ederson.
With Palace defending high and breaking fast, the closest City came to a goal was midway through the first half.
This was when substitute striker Sergio Aguero’s shot took a slight deflection off a defender and hit the post.
Aguero had come on for Gabriel Jesus, who was the second player to come off injured after Palace captain Scott Dann.
But Jesus was the third altogether, with City playmaker Kevin De Bruyne carried off in added time, and meaning City finished the match with 10 men.
“Protect all the players — that is all I ask,” Guardiola said when asked if Jason Puncheon’s tackle on De Bruyne deserved a red card.
“We could have dropped points before. Eighteen wins in a row is unreal.”
Chasing a third straight 5-0 win against Palace, City’s top two goalscorers — Raheem Sterling and Aguero — were both left on the bench.
But that did not stop City threatening Wayne Hennessey’s Palace goal on his return to the starting line-up from the off, with Bernardo Silva drilling wide two minutes in.
Palace slowly grew into the match and a mix-up between City goalkeeper Emerson and defender Eliaquim Mangala presented Christian Benteke with the chance to break the deadlock.
But Mangala recovered well to block.
Aguero then came within inches of scoring five minutes later but his deflected strike came out off the post.
After the break, City really started to find their rhythm.
Following a fine, flowing move, Ilkay Gundogan curled just wide of Hennessey’s goal before the Palace stopper did brilliantly to block Leroy Sane’s effort.
Palace rode the storm and had a golden chance to snatch victory with 13 minutes left, but Andros Townsend blazed over the top. Thereafter, the roof nearly came off Selhurst Park as Zaha won for Palace a penalty kick —- until Milivojevic fluffed his lines.
“It is frustrating of course (to miss the late penalty kick),” Palace boss Roy Hodgson said. “I think that at a moment like this it is better to concentrate on the performance and how well we played.”