The Potters could have gone two points clear at the top, but the defeat means they stay in second.
Tom Soares put Palace ahead against the run of play, heading in Scott Sinclair's right wing cross with 21 minutes gone.
Stoke missed a number of chances before Jose Fonte doubled the Eagles' lead on the stroke of half-time.
Glenn Whelan pulled a goal back for the home side with five minutes gone, but it was a case of too little too late.
After the game, Stoke boss Tony Pulis said: "We didn't get the luck we needed tonight. The header from Mamady Sidibe which hit the inside of the post would have gone in a few weeks ago.
"We had lot of chances to get back in the game and it just wouldn't go in, but I saw enough to stay confident."