Imran Tahir's record-breaking five-for and a half-century from debutant Rassie van der Dussen helped South Africa to an unconvincing Twenty20 win over Zimbabwe at Buffalo Park.

Van der Dussen steadied a wobbling Proteas innings with a knock of 56, though the hosts still recorded their lowest score - 160-6 - on the ground in the shortest format.

But the 29-year-old's 44-ball knock proved to be enough as Tahir's brilliant bowling sliced through Zimbabwe, the leg-spinner becoming the Proteas' record T20 wicket-taker in the process.

Figures of 5-23 nudged Tahir past Dale Steyn's tally of 58 wickets for top spot as the tourists fell 34 short of victory, despite a blistering 53-run partnership between Peter Moor (44) and Brandon Mavuta (28).

Some shoddy early Proteas batting saw new man Gihahn Cloete dismissed from just his third delivery, with the more experienced figure of Quinton de Kock departing soon after.

Captain Faf du Plessis restored some composure to the batting order with a steady stream of boundaries in the powerplay - hitting 34 off 20 deliveries - only to then pick out Mavuta on the boundary from the first ball of the seventh over.

Instead, it was Van der Dussen who stepped up for South Africa, reaching 50 during a fourth-wicket stand of 87 with David Miller (39) that ensured a more respectable total.

Their partnership ended when Miller - let off moments earlier as Tarisai Musakanda carried a catch over the boundary for six - chipped Kyle Jarvis to Sean Williams at long-on, prompting a late Proteas collapse.

Fears that the home batsmen had not done enough were soon abated, though, as Tahir took three wickets in the first four overs, including captain Hamilton Masakadza and Musakanda in consecutive balls.

And Zimbabwe's hopes of victory looked to be over when the same bowler removed Williams for 21, with Tahir then trapping Elton Chigumbura lbw with his next delivery.

A stunning display from Moor brought the visitors' target into view as he smashed four consecutive sixes off Tabraiz Shamsi, but South Africa claimed the final three wickets for three runs to dismiss their opponents for 126.