Manchester City's stuttering title defence suffered another blow as Michael Olise's 95th-minute penalty rescued a dramatic point for Crystal Palace.
City had led 2-0 through goals by Jack Grealish and Rico Lewis and appeared to be cruising to victory until Jean-Philippe Mateta pulled a goal back with 14 minutes remaining.
There was more drama to come in stoppage time, when Phil Foden caught Mateta as he attempted to clear and referee Paul Tierney pointed to the spot.
Michael Olise stepped up to slot past Ederson and spark wild celebration among the away fans who had seen their team pegged back for much of the match.
The draw, City's third consecutive at home, leaves the defending champions in fourth place, three points behind leaders Liverpool.
Palace have still only won one of their past 10 games but after losing out to a stoppage-time goal by Liverpool last week, this must have felt like a victory for Roy Hodgson's men, and was certainly celebrated like one.
Reaction from Man City v Crystal Palace and the rest of Saturday's Premier League actionWhat did you make of Manchester City's display? Send us your views hereHow did you rate Crystal Palace's performance? Have your say hereMore to follow.
How to play
Rate players out of 10 throughout or after the game. The rater will close 30 minutes after the final whistle.
Rating range key1 = Give it up10 = Pure perfection
Manchester City
Squad number31Player nameEderson
Squad number2Player nameWalker
Squad number3Player nameRúben Dias
Squad number6Player nameAké
Squad number24Player nameGvardiol
Squad number82Player nameLewis
Squad number16Player nameRodri
Squad number20Player nameBernardo Silva
Squad number47Player nameFoden
Squad number10Player nameGrealish
Squad number19Player nameÁlvarez
Squad number5Player nameStones
Crystal Palace
Squad number30Player nameHenderson
Squad number17Player nameClyne
Squad number2Player nameWard
Squad number16Player nameAndersen
Squad number6Player nameGuéhi
Squad number3Player nameMitchell
Squad number7Player nameOlise
Squad number26Player nameRichards
Squad number44Player nameRiedewald
Squad number15Player nameSchlupp
Squad number14Player nameMateta
Squad number10Player nameEze
Squad number11Player nameMatheus França
Squad number29Player nameAhamada
Squad number52Player nameOzoh
Line-ups
Man City
Formation 4-2-3-1
31EdersonBooked at 42mins2Walker3Rúben Dias6Aké24Gvardiol82LewisSubstituted forStonesat 90+6'minutes16Rodri20Bernardo Silva47Foden10Grealish19ÁlvarezSubstitutes
4Phillips5Stones8Kovacic18Ortega21Gómez25Akanji27Nunes52Bobb76SusohoCrystal Palace
Formation 5-4-1
30Henderson17ClyneSubstituted forEzeat 90+1'minutes2WardSubstituted forOzohat 34'minutes16AndersenBooked at 40mins6Guéhi3Mitchell7Olise26Richards44RiedewaldSubstituted forAhamadaat 81'minutes15SchluppSubstituted forFrança de Oliveiraat 81'minutes14MatetaSubstitutes
5Tomkins10Eze11França de Oliveira23Ebiowei29Ahamada31Matthews45Adaramola52Ozoh53Ola-AdebomiLive Text
Match ends, Manchester City 2, Crystal Palace 2.
Second Half ends, Manchester City 2, Crystal Palace 2.
Foul by Josko Gvardiol (Manchester City).
Eberechi Eze (Crystal Palace) wins a free kick on the right wing.
Substitution, Manchester City. John Stones replaces Rico Lewis.
Goal! Manchester City 2, Crystal Palace 2. Michael Olise (Crystal Palace) converts the penalty with a left footed shot to the bottom left corner.
Penalty conceded by Phil Foden (Manchester City) after a foul in the penalty area.
Penalty Crystal Palace. Jean-Philippe Mateta draws a foul in the penalty area.
Attempt blocked. Naouirou Ahamada (Crystal Palace) right footed shot from outside the box is blocked. Assisted by Michael Olise.
Substitution, Crystal Palace. Eberechi Eze replaces Nathaniel Clyne.
Phil Foden (Manchester City) wins a free kick on the right wing.
Foul by Tyrick Mitchell (Crystal Palace).
Attempt saved. Bernardo Silva (Manchester City) left footed shot from the right side of the box is saved in the centre of the goal. Assisted by Rico Lewis.
Rico Lewis (Manchester City) wins a free kick in the defensive half.
Foul by Marc Guéhi (Crystal Palace).
Foul by Nathan Aké (Manchester City).
Michael Olise (Crystal Palace) wins a free kick on the right wing.
Kyle Walker (Manchester City) wins a free kick on the right wing.
Foul by Matheus França (Crystal Palace).
Substitution, Crystal Palace. Matheus França replaces Jeffrey Schlupp.