The hosts led at half-time through Xherdan Shaqiri’s deflected free-kick, but James McArthur levelled things up midway through the second half after a swift counter-attack, and then five minutes from time Patrick van Aanholt tucked home the winner to extend Roy Hodgson’s team’s unbeaten run to five games.
More importantly, it secured his team’s Premier League safety - remarkable given their dreadful start that saw them pointless, goalless and written off after seven matches, and now even a top-half finish is possible by the time the campaign concludes next weekend.
Palace’s confidence, which oozed throughout the drubbing of Leicester City last weekend, quickly came to the fore again in Staffordshire as eight minutes in some sublime skills in midfield from McArthur and Wilfried Zaha gave Ruben Loftus-Cheek the chance to gallop forward and curl the ball just over the crossbar, and then Zaha dragged a shot just wide of Jack Butland’s far post as the visitors started brightly in the spring sunshine.
But Stoke were scrapping for their Premier League lives and came more into the game as the first 45 progressed. They spurned a great chance when Joe Allen and Shaqiri combined to create a crossing opportunity, but Mame Biram Diouf steered his header well wide when well positioned, however they continued to hold their opponents at bay, despite some impressive spells of possession by the Eagles.
Just as it seemed a quiet opening half would end goalless, on 42 minutes the Potters handed themselves what seemed to be a top-flight lifeline. Loftus-Cheek tripped Shaqiri in a prime position for the diminutive Swiss to line up a free-kick which he promptly curled over the wall, and the ball clipped Loftus-Cheek before arcing into the top corner, allowing him to celebrate scoring against the Eagles for the second time this season.
With Paul Lambert’s team now possessing something to desperately hold on to, the second half began with a procession of niggly fouls on Palace players as the Potters tried to disrupt any rhythm or attacks. That led to an unattractive period where neither goalkeeper was tested until 68 minutes, when a swift counter led to the equaliser.
After McArthur had given the ball away on the edge of his own box, Mamadou Sakho won back possession and played a long ball to Christian Benteke, who won the header and found an advancing Zaha. With options either side, the winger slid in Loftus-Cheek who then found an overlapping McArthur, and the Scotsman capped off a 90-yard sprint by coolly sliding the ball past Butland for his seventh goal of an impressive campaign.
That once again allowed the Eagles to gain a firmer grip of the game and with 15 minutes to go Andros Townsend scampered down the left flank and cut the ball back perfectly for Zaha on the penalty spot but he fired over the bar, and then Benteke screwed wide with Butland scrambling.
The tension around the Bet365 Stadium was palpable with the home fans knowing a second for Hodgson’s team would prove terminal, and Loftus-Cheek nearly provided it when he flashed a shot into the travelling fans, but with five minutes to go, it arrived to condemn the Potters into the Championship.
Zaha received the ball on the right and played a low centre towards Benteke, but Ryan Shawcross looked to have it covered. However, the Stoke skipper inadvertently prodded it into the space in front of Butland, and Van Aanholt nipped in to slip the ball past the keeper to score in successive matches and grab the win for the Eagles.
That marked the fourth occasion that Palace have come from behind to beat Stoke in the Premier League, and ended Stoke's 10-year stay in the top-flight. However, Hodgson’s Eagles can now look forward to next season, safe in the knowledge they will be amongst English football’s elite once again.
Stoke: Butland, Johnson (Campbell 77), Shawcross, Zouma, Pieters, Shaqiri, Allen, Ndiaye, Bauer, Diouf, Crouch (Sobhi 67). Subs not used: Haugaard, Cameron, Adam, Fletcher, Adam.
Palace: Hennessey, Ward (Kelly 40), Sakho, Tomkins, Van Aanholt, McArthur, Cabaye (Benteke 63), Milivojevic, Loftus-Cheek, Townsend (Schlupp 88), Zaha, Subs not used: Cavalieri, Wan-Bissaka, Lee, Sørloth.