Stoke substitute Peter Crouch spared Saido Berahino's blushes as he came off the bench to register the winner against old club Southampton.
Having led through Mame Diouf's header, Berahino then had a penalty to end a goalless streak that dates back to February 2016, but he missed his fourth successive spot-kick during that drought as Fraser Forster kept it out.
It looked like it would prove costly when Maya Yoshida headed in a 75th-minute equaliser, yet Crouch, who came on for Berahino, poked in the winner from close range to make it 2-1 and earn the Potters their first win in six.
Berahino had been praised by his manager Mark Hughes on Friday and he was handed a recall for a Stoke side missing Jese Rodriguez through compassionate leave.
There was also a first start of the season for Southampton's Virgil van Dijk after the Liverpool target was denied a summer move away.
The Dutchman last started in January, with a foot injury ending his campaign early last season, and it was evident early on just why he was so sought after as he made three key blocks.
His central-defensive partner Yoshida was sidestepped easily by Xherdan Shaqiri when the Swiss fired at Forster, with Diouf dithering over the rebound and allowing Mario Lemina to stop his shot.
In the battle of the back-up England goalkeepers, Jack Butland produced his own fine save to deny Shane Long from close range when he was played in by Oriol Romeu, though Forster was still being kept busier as he denied Maxim Choupo-Moting.
However, Forster was helpless when Stoke went ahead five minutes before the interval through Diouf, who nodded in unmarked from Shaqiri's near-post corner.
The Potters looked set to double that advantage three minutes later when the otherwise faultless Van Dijk clipped Berahino as he came across him in the box.
Despite his recent woeful record from the spot, the 24-year-old stepped up himself only for Forster to guess correctly, diving left to keep out a penalty that was not struck into the corner.
What should have been a morale-boosting moment for Berahino only proved to further sap his confidence.
He barely had a sniff to register his first Stoke goal, and his first in 32 appearances, after the break before being replaced by Crouch 20 minutes from time.
Southampton boss Mauricio Pellegrino brought on Sofiane Boufal in the 61st minute in place of captain Steven Davis, with a member of the visiting backroom staff making sure the armband was passed to Yoshida rather than previous incumbent Van Dijk.
And it was the man in possession of that armband who levelled.
Boufal reached the byline after his initial corner was cleared out to him and his cross was flicked on by Long to where Yoshida could dispatch a scissor-kick volley in off the crossbar.
Yet another of the replacements, one familiar to Saints fans from his season with them over a decade ago, had the final say.
Stoke wanted a penalty again when Joe Allen went down under a challenge from Romeu, but play continued and Shaqiri released Erik Pieters to cross for Choupo-Moting.
His first effort was blocked by Forster's leg, but from the ground he poked back towards goal and Crouch was on hand to sweep in from a couple of yards out to win it.