A stunning fightback from the Stormers saw them break the Pumas' hearts in a helter-skelter Super Rugby Unlocked encounter at Mbombela Stadium in Nelspruit on Friday evening.
The men from the Cape won 42-37, after trailing 30-14 at half-time.
AS IT HAPPENED | Pumas v Stormers
The Pumas appeared to have the game wrapped up when they led 37-14 heading into the final quarter against an error prone Stormers outfit. But the home side ran out of puff as the visitors ran in four tries in the last 20 minutes to sneak a win.
For large parts, it looked like the Pumas would coast to victory as their more fancied opponents made one error after another.
But the Stormers, seemingly out of nowhere, found their groove late in the game to eventually run in six tries for a bonus-point victory.
The Pumas went ahead with an early penalty in the third minute from flyhalf Eddie Fouche, before the Stormers hit back immediately when centre Rikus Pretorius crashed over after a charge down from scrumhalf Herschel Jantjies.
But the Stormers' lead lasted barely a minute when the hosts hit back through winger Neil Maritz, who intercepted a reckless pass near his own goal-line from Stormers No 8 Juarno Augustus.
The Pumas had the Stormers on the back foot with their physical and direct approach.
In the 14th minute, a great kick from Fouche bounced kindly for inside centre Wayne van der Bank, who off-loaded to No 8 Jeandre Rudolph who rounded off under the posts.
Another Fouche penalty saw the hosts take a 20-7 lead after 20 minutes.
Both teams then suffered cruel injury blows, with the Stormers losing skipper Siya Kolisi in the 25th minute and the Pumas losing playmaker Fouche three minutes later. Both players suffered bad-looking knee injuries at rucks.
The Stormers hit back with a classy try by scrumhalf Jantjies, who darted over after great interplay by midfielders Pretorius and Dan du Plessis from within their own half.
But the Pumas were not perturbed and hit back in the 32nd minute after a great break by Rudolph off a lineout set up Van der Bank for a score under the posts.
It saw them take a handy 30-14 lead into the break.
The hosts started the second period on a low note when Rudolph received a yellow card in 44th minute for cynically slinging Jantjies into an advertising board after the referee's whistle had gone.
But the Stormers did nothing to cash in on their numerical advantage and the Pumas extended their lead in the 52nd minute when Maritz went over in the corner for his second try. It came after a concerted period of attack by the home side.
Replacement flyhalf Niel Marais converted from the corner to hand the Pumas a 37-14 lead after 53 minutes.
A few minutes later, the Pumas squandered a golden opportunity to extend their lead but replacement loose forward Phumzile Maqondwana knocked on with the tryline begging.
That error proved costly.
The visitors were finally on the scoreboard in the second half when replacement prop Neethling Fouche went over near the posts in the 62nd minute after a concerted period of attack.
Trailing 37-21 inside the final quarter, the Stormers kept probing and their efforts were rewarded when hooker Bongi Mbonambi went over in the 71st minute after a dominating lineout drive.
Tim Swiel's conversion made the scoreline 37-28 with eight minutes remaining.
Winger Leolin Zas finished off a great team try a few minutes later, with Swiel's conversion making it a two-point game heading into the final five minutes.
The Pumas had run out of puff and their hearts were broken when Stormers fullback Warrick Gelant rounded off another great team try in the 78th minute.
It wasn't pretty for most of the evening, but the Stormers will take the full house of points - and no doubt aware that a repeat performance will not suffice later in the tournament.
In next weekend's action, the Pumas host the Sharks in Nelspruit, while the Stormers duel the Bulls in Pretoria.
Tries: Neil Maritz (2), Jeandre Rudolph, Wayne van der Bank
Conversions: Eddie Fouche (2), Niel Marais (2)
Penalties: Fouche (3)
Tries: Rikus Pretorius, Herschel Jantjies, Neethling Fouche, Bongi Mbonambi, Leolin Zas, Warrick Gelant
Conversions: Tim Swiel (6)
15 Devon Williams, 14 Neil Maritz, 13 Erich Cronje, 12 Wayne van der Bank, 11 Etienne Taljaard, 10 Eddie Fouche, 9 Ginter Smuts, 8 Jeandre Rudolph, 7 Willie Engelbrecht, 6 Francois Kleinhans, 5 Pieter Jansen van Vuren (captain), 4 Darrien Landsberg, 3 Ruan Kramer, 2 AJ le Roux, 1 Morgan Naude
Substitutes: 16 Simon Westraadt, 17 Liam Hendricks, 18 Heath Backhouse, 19 Phumzile Maqondwana, 20 Dian Badenhorst, 21 Niel Marais, 22 Ali Mgijima, 23 Ig Prinsloo
15 Warrick Gelant, 14 Edwill van der Merwe, 13 Dan du Plessis, 12 Rikus Pretorius, 11 Leolin Zas, 10 Tim Swiel, 9 Herschel Jantjies, 8 Juarno Augustus, 7 Ernst van Rhyn, 6 Siya Kolisi (captain), 5 Chris van Zyl, 4 Salmaan Moerat, 3 Frans Malherbe, 2 Bongi Mbonambi, 1 Leon Lyons
Substitutes: 16 Chad Solomon, 17 Kwenzo Blose, 18 Neethling Fouche, 19 JD Schickerling, 20 Nama Xaba, 21 Jaco Coetzee, 22 Godlen Masimla, 23 Michal Haznar