Colin de Grandhomme fired with bat and ball to back up Kane Williamson's 176 as New Zealand tightened the screws on South Africa in the series deciding final Test here on Tuesday.
At stumps on day four, South Africa were 80 for five in their second innings, still 95 runs short of making New Zealand bat again.
Faf du Plessis and Quinton de Kock were both 15 not out.
De Grandhomme, whose lower order 57 helped push New Zealand to 489, a lead of 175, struck in the sixth over of South Africa's reply with the wicket of Dean Elgar for five.
He rounded off his day with a smart catch to dismiss Hashim Amla.
The Zimbabwe-born de Grandhomme was not required for the first Test when Elgar scored 140 and 89 but in four innings since he has removed the opener for scores of nine, 17, five and five.
The loss of Elgar should have signalled to South Africa it was time to dig in but instead wickets fell at regular intervals.
Theinus de Bruyn was run out for 12 in a bizarre mid-pitch collision after an Amla drive to mid off.
De Bruyn was keeping an eye on the fielder and veered into Amla, leaving the batsmen sprawled on the ground as Williamson threw to BJ Watling to complete the dismissal.
Amla, on eight then, progressed to 19 when he edged a ball from Jeetan Patel which rebounded off Watling's glove to the sole slip de Grandhomme.
Patel also bowled JP Duminy (13) and Matt Henry had Temba Bavuma caught behind for one to leave South Africa 59 for five before du Plessis and de Kock survived 12 overs to stumps.
Should New Zealand level the series it will be a remarkable turnaround from the eight-wicket, three-day hiding suffered in the second Test, and achieved without injured strike bowlers Trent Boult and Tim Southee as well as senior batsman Ross Taylor.
New Zealand started the day with a seven-run lead and added a further 168 with Williamson posting his third-highest Test score and de Grandhomme chipping in with his maiden half-century.
After Williamson and Mitchell Santner consolidated the innings with a patient 88-run stand for the fifth wicket, de Grandhomme finished the innings with a flourish, smacking five fours and two sixes in his 70-ball stay.
Williamson had looked assured throughout until he hooked Morkel to Vernon Philander at long leg after 449 minutes in the middle.
He faced 285 deliveries in the marathon innings which lasted more than seven hours and included 16 fours and three sixes.
When Santner went in the last over before lunch for 41, de Grandhomme joined BJ Watling to lift the pace.
From less than two an over the run rate lifted to four with Watling contributing 24 before he was bowled by Keshav Maharaj.
Henry added 12 and Patel five before the innings folded with de Grandhomme gloving a Morne Morkel flyer through to wicketkeeper de Kock.
Morkel took four for 100 and Kagiso Rabada four for 122 while de Kock held five catches behind the stumps.