City were on the back-foot after conceding inside the first 10 minutes, and after losing Aymeric Laporte to a straight red in first-half added time, faced an uphill struggle thereafter.
Despite a stirring second-half and and a goal disallowed by VAR, Palace snatched a late second to record a controversial 2-0 victory.
City were behind with just five minutes on the clock with a goal that was largely self-inflicted as Aymeric Laporte carried the ball towards the halfway line – but his attempt to play a short pass to Ruben Dias allowed Conor Gallagher to nip in, he fed Wilfried Zaha and his scuffed shot from 15 yards found the bottom right corner.
It was the first home goal City had conceded this season and it’s fair to say it stunned the Etihad into silence.
With one or two stern challenges made, it was proving a tough physical contest as City attempted to find a way back into the game.
Palace’s timewasting antics were also riling the already frustrated home support, particularly as the visitors were stoically defending deep inside their own half.
With a number of uncharacteristic, misplaced passes leaving Pep Guardiola shaking his head at times, it was clear the half-time whistle couldn’t come quick enough for the below-par champions.
But City’s afternoon was about to get worse in first-half added time as Laporte was adjudged to have denied Zaha a goal-scoring opportunity with a challenge that looked clumsy more than intentional - and was shown a straight red card – despite Zaha being a long way from goal.
As tempers boiled over in the seconds that remained, Gabriel Jesus and Zaha had to be separated as their on-going, in-game feud continued.
Now with just 10 men, City faced an even tougher task to turn the game around.
With a formation change needed, City switched to three at the back and could have been level four minutes after the restart as Jack Grealish teed up Rodrigo who whipped his shot over the bar from 10 yards out.
With the visitors’ high press causing one or two anxious moments at the back, John Stones was summoned off the bench to replace Kevin De Bruyne who had worked tirelessly without reward.
Seconds later, City had the ball in the net as Phil Foden’s brilliant control and cross was turned in by Jesus at the far post – only for VAR to judge Foden to have been a fraction offside – it felt incredibly harsh.
City, driven on by Foden, Jesus and Grealish’s dynamism, continued to take the game to Palace, with a sense of injustice palpable from the home support as the minutes ticked down.
But Palace survived the storm and a counter-attack on 88 minutes ended with Gallagher finishing from close range.
City's second-half efforts had not reaped the reward they undoubtedly deserved.
What it means...
City lose crucial ground on leaders Chelsea who beat Newcastle and second-placed Liverpool - who were held by Brighton - in the title race.
City return to Champions League action on Wednesday evening with our fourth group stage clash of six as we host Club Brugge, with an 20:00 (UK) kick-off.
Then the champions make the short journey across the city to face Manchester United at Old Trafford on Saturday, 12:30pm kick-off.
"We conceded early on - how many chances did they have after their goal? It was quite similar to when Palace came here last year with Roy Hodgson with 10 men back - we lost one game one year, drew another one.
"The same process - the keeper takes time, the rhythm, the momentum, long balls to Zaha and they are so good at keeping the ball.
"They have quality and they defend really, really well with solidarity, defending the gaps and stopping us from shooting and I cannot say we had many but in the first half, we had chances to score, but when we went to 10 men it was more difficult, we scored but VAR disallowed it and even Rodri had one or two chances to score but in the end they counter-attack and scored a second goal."
City: Ederson, Walker, Cancelo (Mahrez 77) , Dias (c), Laporte, Rodrigo, De Bruyne (Stones 60), Bernardo, Grealish (Sterling77), Jesus, Foden
Subs: Steffen, Ake, Gundogan, Zinchenko, Fernandinho, Palmer
Crystal Palace: Guaita, Ward, Andersen, Guéhi, Mitchell, Gallagher, Kouyaté (Olise 77), McArthur, J Ayew (Benteke 65), Édouard (Schlupp 73), Zaha
Subs: Butland, Milivojevic, Tomkins, Mateta, Clyne, Kelly
News about Man City v C Palace
City v Crystal Palace: Full-match replay
Watch the entire 90-minutes of Manchester City’s Premier League home game against Crystal Palace. Watch more
Guardiola: Creating chances is key
Pep Guardiola says as long as his team are creating chances, that is all he can ask. Watch more
'Many things went wrong': Guardiola reacts to Palace defeat
Pep Guardiola refused to blame the two major refereeing decisions that went against Manchester City for our defeat to Crystal Palace as he admitted a number of things went wrong for his side in his 200th Premier League game. Read more
City 0-2 Palace: Short highlights
Brief action from our clash with Crystal Palace... Watch more
City 0-2 Crystal Palace: Extended highlights
The best of the action from our home clash with Palace... Watch more
Manchester City 0-2 Crystal Palace: Match stats and reaction