Replacement flyhalf Justin van Staden succeeded with an 82nd minute penalty to condemn the Blue Bulls, the three-times champions, to their second consecutive loss of their year's tournament.
The loss would have been particularly hard on the Bulls who had fought their way back, after being 16 points down, to lead 20-19 with just one minute to play after left-wing Jesse Kriel slid over for a converted try in the last minute of regulation play.
The Pumas were on a high coming into the game after a 26-6 win over the Valke in their previous match and they made a confident start thanks to two penalties from flyhalf JC Roos before eighthman Renaldo Botha barged his way over for a converted try in the 19th minute.
Roos kicked another penalty four minutes later as the Pumas eased to the half-time break.
The Bulls found some all-important momentum in the second half and they finally opened their account, four minutes after the restart, when lock David Bullbring muscled his way over for a converted try.
Bulls flyhalf Louis Fouche then kicked two penalties to narrow the gap to just three points with eight minutes to play.
Van Staden extended the host's lead with a 75th minute penalty before the Bulls took the lead for the first and only time in the match thanks to Kriel's late try, only for them to suffer late heartbreak.
Scorers:
Pumas
Try: Renaldo Botha
Conversion: JC Roos
Penalties: JC Roos (3), Justin van Staden (2)
Blue Bulls
Try: David Bullbring, Jesse Kriel
Conversions: Louis Fouche (2)
Penalties: Fouche (2)