The roles were reversed at Selhurst Park as Foden was handed a rest by Pep Guardiola and De Bruyne inspired a fightback after City fell behind on three minutes.
Im between his two goals, the Belgian also set up Erling Haaland to end his goal drought.
“It’s been an untypical season. Being out for five months, sometimes I feel good, sometimes I need a bit of time for my body,” said De Bruyne.
“I don’t expect to be just given my place. If I don’t perform well I won’t play. Phil has been amazing this season, he keeps me on my toes.”
Just three days ahead of City’s trip to Real Madrid in the Champions League quarter-finals, Guardiola took the chance to shuffle his pack again.
Manuel Akanji, Bernardo Silva and Jeremy Doku were dropped to the bench alongside Foden.
On paper, City did not appear to be weakened as John Stones and Oscar Bobb came in with De Bruyne and Haaland.
But an error from the ring-rusty Stones gave Palace the perfect start after just three minutes.
Stones was making his return after being injured on England duty last month. His errant pass was pounced on by Adam Wharton, who released Jean-Philippe Mateta to fire in off the post.
The goal awoke City and they were level within 10 minutes as De Bruyne curled a strike into the top corner.
“Today Kevin won the game with his actions, goals, assists, his talent,” said Guardiola. “Today we won (because of) him.”
Haaland had failed to score in his previous five games for club and country and failed to take advantage of a brilliant De Bruyne through ball as Dean Henderson saved a one-on-one.
Palace could also have been back in front before the break when Jordan Ayew smashed off the bar after a rare Rodri error.
There was little doubt over the outcome once Rico Lewis pounced on some slack Palace defending from Jack Grealish’s deflected cross to make it 2-1 on 47 minutes.
Grealish’s season has been repeatedly disrupted by injury but his return to fitness and form could be a vital component in City’s quest to retain the Premier League, Champions League and FA Cup.
Grealish was also involved in his side’s third goal, picking out De Bruyne, whose cross was touched in by Haaland for a much-needed goal for the Norwegian.
Haaland has 30 for the season in all competitions but had failed to find the net in 12 of his previous 17 games on his return from a foot injury that kept him out for two months.
Having curled one in on his right foot, De Bruyne then blasted in a piledriver with his left to make it 100 goals in 372 games since joining City in 2015.
At that point, City seemed set to win by the four-goal margin they needed to go above Liverpool on goal difference.
But Palace got the sixth and final goal when Odsonne Edouard turned in Jeffrey Schlupp’s cross.
City moved two points ahead of Arsenal, who can regain top spot later on Saturday when they visit Brighton.
© Agence France-Presse
Photo: Twitter @FabrizioRomano