The Pumas made a winning return to the Currie Cup top flight on Saturday with a 28-21 win over the Free State Cheetahs in Nelspruit.
In was far from a classic, but the Pumas outscored their visitors three tries to two in a ding-dong battle at the Mbombela Stadium.
The Cheetahs led 16-15 at the interval thanks to the first of two tries from winger Rayno Benjamin and a handful of penalties from fly-half Willie Du Plessis.
The Pumas had been in front after full-back JW Bell and captain Corne Steenkamp touched down but a silly yellow card just before the break allowed the visitors to edge ahead.
In scrappy game, marred by numerous unforced errors and frequent penalties, the lead changed hands a number of times during the first half but once the Pumas got their noses ahead after the break, they never relinquished the lead again.
Pumas centre JW Jonker scored at the start of the final quarter meaning that Benjamin's second try on 73 minutes proved too little, too late for the visitors, who will have to settle for a losing bonus point.
Jonker's 66th-minute try was tinged with controversy after number eight Renaldo Bothma tapped a grubber from Stefan Watermeyer back infield even though his legs were on the touchline.
Even though Bothma, who was a rampaging ball-carrier throughout, was clearly in touch, the laws state that "a player in touch may kick or knock the ball, but not hold it, provided the ball has not crossed the plane of the touchline".
The Cheetahs had only themselves to blame for their loss, however, as they failed to gain a platform up front and made a host of unforced errors.
The Pumas kept pressure on the visitors through an excellent scrum and their abrasive defence.
The Free Staters opened the scoring in the fifth minute through a sustained attack started and ended by Benjamin, but the Pumas' forwards quickly began to make their presence felt, dominating the scrums and harrying the Cheetahs at the breakdown.
Their first try came in the 20th minute as Bell tapped a ruck penalty and darted through a gap left by lock Francois Uys, who was busy scuffling with another player.
Fly-half Justin van Staden added the conversion to his earlier penalty and the Pumas were 10-7 up.
The Pumas scored their second try as flank Steenkamp, celebrating his 150th game, went over from a maul, but Du Plessis ensured the visitors were 16-15 up at the break with three penalties.
The frustrated Cheetahs began to lose their discipline in the second half, with Van Staden punishing them for being offsides with a penalty and scrum-half Sarel Pretorius joining the Pumas fly-half, in the first half, in being yellow-carded for kicking the ball away after the whistle had blown.
A high tackle by lock Carl Wegner allowed Van Staden to kick another penalty and stretch the Pumas' lead to 21-16 in the 62nd minute and the hard-working home side were then rewarded for their effort with a third try four minutes later.
Jonker's try was awarded with the confirmation of the Television Match Official and the vagaries of the law were then further exposed shortly afterwards when Cheetahs wing Raymond Rhule had a try disallowed for his foot landing on the touchline while he was carrying the ball.
The Free Staters were awarded a scrum under the post instead, from which Benjamin scored his second try, but the steeliness of the Pumas won out in the end as they ended the match by holding on to the ball for 15 phases.
Tries: Bell, Steenkamp, Jonker
Cons: Van Staden 2
Pens: Van Staden 3
Yellow card: Van Staden
For Free State Cheetahs:
Tries: Benjamin 2
Con: Du Plessis
Pens: Du Plessis 3
Yellow cards: Pretorius
Pumas: 15 JW Bell, 14 Ruwellyn Isbell, 13 JW Jonker, 12 Stefan Watermeyer, 11 Rosco Speckman, 10 Justin van Staden, 9 Reynier van Rooyen, 8 Renaldo Bothma, 7 Jaco Bouwer, 6 Corne Steenkamp (c), 5 Marius Coetzer, 4 Frikkie Spies, 3 DeJay Terblanche, 2 Francois du Toit, 1 Vincent Koch.
Replacements: 16 Frankie Herne, 17 Corne Fourie, 18 Giant Mtyanda, 19 Uzair Cassiem, 20 Snake Nyoka, 21 JC Roos, 22 Jerome Pretorius.
Cheetahs: 15 AJ Coertzen, 14 Rayno Benjamin, 13 Francois Venter, 12 Joubert Engelbrecht, 11 Raymond Rhule, 10 Willie du Plessis, 9 Sarel Pretorius, 8 Boom Prinsloo, 7 Neil Claassen, 6 Tienie Burger, 5 Francois Uys, 4 Carl Wegner, 3 Luan de Bruin, 2 Torsten van Jaarsveld (c), 1 Kevin Stevens.
Replacements: 16 Hercu Liebenberg, 17 Bees Roux, 18 Waltie Vermeulen, 19 Henco Venter, 20 Renier Botha, 21 Elgar Watts, 22 JP du Plessis.
Referee:Marius van der Westhuizen