The Potters went ahead in the eighth minute via Route One, with Jon Walters latching onto a flick on by Peter Crouch to slot home.
Mark Hughes’s side then doubled their advantage on 25 minutes thanks to a sharp passing move, with Walters crossing to Crouch who then played in Stephen Ireland to finish.
But the hosts pulled a goal back on 56 minutes when the unmarked Wilfried Bony headed home from close range from a Jonathan de Guzman cross following a corner.
Substitute Nathan Dyer equalised with 16 minutes remaining after a Wayne Routledge cross fell into his path.
Bony scored from Jonjo Shelvey’s cross on 86 minutes – his 10th goal of the season – to put Swansea ahead for the first time in the game.
But the hosts, who had let leads slip in the dying moments of both Europa League meetings with Kuban Krasnodar, were denied again when referee Robert Madley decided Routledge had handled a Ryan Shawcross header and substitute Adam made no mistake from the spot deep into injury time.
Such a result had seemed unlikely after a lacklustre first-half display from Swansea, but the shell-shocked Welsh side will feel aggrieved to not have taken all three points after a rousing fightback.
Stoke, meanwhile, see their winless run extended to eight games and Mark Hughes will be furious they contrived to throw away a fully-deserved interval lead, although his side climbed out of the drop zone with the point.
The visitors had hit the front in just the eighth minute. Ashley Williams was off the field after treatment, desperately trying to come back on, when Crouch flicked on a long ball and Ben Davies and Chico Flores got in each other’s way to allow Walters to apply the finish.
Williams was furious and let his frustrations show with a poor challenge on Steven Nzonzi for which he was lucky not to be booked.
Swansea could have levelled in the 15th minute but Roland Lamah headed straight at Asmir Begovic after good work by Alejandro Pozuelo and Angel Rangel.
But instead they fell further behind with 25 minutes gone. Leon Britton was robbed of possession and two lovely passes from Walters and Crouch ripped Swansea apart for Ireland to slot beyond Gerhard Tremmel.
Flores then disgraced himself with an embarrassing attempt to get Nzonzi sent off. The Stoke midfielder was involved in an exchange of words with Bony and pushed out at Flores’ chest, but the Spaniard collapsed in a heap clutching his face and was rightly booked.
To compound Swansea frustrations they then spurned a gilt-edged chance to pull a goal back.
Erik Pieters’ back pass found a lurking Bony, but Begovic knocked the ball away from the striker as he attempted to round the keeper, before saving Routledge’s follow-up.
The Ivorian made no such mistake in the 56th minute. Stoke failed to clear a de Guzman corner and the Dutchman did not waste the second chance as he picked out Bony, who powered in his header from close range.
Swansea suddenly discovered a flow to their game and an exquisite exchange of passes between Britton, Alejandro Pozuelo and Routledge ended with Bony’s attempted backheel being deflected wide by Geoff Cameron.
Stoke were having to deal with incessant pressure but could not hold out. Routledge surged past Cameron to the byline and when Walters’ headed clearance dropped to Dyer, the substitute volleyed home with the aid of a slight deflection.
With the game on a knife-edge, frayed tempers began to boil over and Rangel was booked after a touchline fracas.
Bony then struck what looked like being the winner, slotting home left-footed from substitute Shelvey’s pull-back, but Stoke emerged with a point in the late drama.