The Blues had led through Ilkay Gundogan's header, but were pegged back by two quickfire goals from the visitors who increased their lead from the penalty spot shortly after the break.
Kevin De Bruyne pulled one back late on, but it proved too late in the day and Palace held on.
It was just a rare bad day at the office for the champions who will look to bounce back quickly over the Christmas period.
City, skippered for the first time by Fabian Delph, almost took the lad after just 70 seconds as Delph fired a left-foot pile-driver that Vicente Guaita did well to tip over.
For the next 25 minutes or so, City completely bossed proceedings without hurting the visitors who were defending resolutely and in numbers.
There were half-chance and scrambled clearances, but nothing of any real note until Leroy Sane fired in a drive from 20 yards that was well held by Guaita.
But within a minute, the Blues had broken the deadlock.
Sane raced down the left before checking back, playing a short pass to Delph whose cross was headed home by Gundogan.
It was just what the game needed, but Palace turned the game on its head in two crazy minutes as Jeffrey Schlupp’s low angled drive drew the visitors level and a minute later Andros Townsend scored a spectacular 25-yard volley that gave Ederson no chance.
Two shots, two goals.
John Stones was doing an admirable job in the holding midfield role, but the injured Fernandinho is almost impossible to replace.
The champions rarely concede goals at the Etihad, so the Etihad remained in something close to stunned silence for the remaining moments of the half.
Though the Blues came out looking for a quick leveller,Palace - who had never beaten City at the Etihad in the Premier League era - increased their lead on 52 minutes from the penalty spot after Walker felled Max Meyer in the box and Luka Milivojevic duly converted.
While Palace had been clinical, the Blues had been oddly off-colour, with too many stray passes and a lack of fluency in attack.
Cit toiled away, but the feeling that it wasn't going to be the champions' day was underlined on 77 minutes when Sane's 25-yard free-kick struck the outside of the post with the keeper rooted to the spot.
Then, five minutes from time, a glimmer of hope as sub Kevin De Bruyne's cross took a deflection and and sailed over Guaita into the net.
The final moments were predictably frantic and Gabriel Jesus' header in added time almost rescued a point, but it wasn't to be.
Star man: Kevin De Bruyne
Stellar cameo performance by the Belgian.
"We started quite well and created chances. We scored a fantastic goal and after they passed the halfway line they scored.
"The third goal...we cannot concede the penalty we conceded. We have to try and avoid it. Football is like this. Three shots on goal and three goals.
"It's complicated but we fight until the last second. We are in December and we will try and recover and try and win games again.
"Their second goal was an incredible goal. There are a lot of games to play. We have to recover mentally and recover our physicality."
What it means…
City fall four points behind Liverpool as we head into the thick of the festive fixtures.
No rest time for weary legs as City are back in action on Boxing Day with a trip to Leicester City (3pm).
Then the Blues are off on their travels again, with a trip to Southampton on Sunday 30 December (2.15pm kick-off).