Off-spinner Dane Piedt took 5-89 for the Proteas as New Zealand were bowled out for 211 late on day two of the second Test in Hamilton on Wednesday.
It gave South Africa, who had been dismissed for 242 earlier in the day, a 31-run first innings lead.
A Proteas team with just 40 Test caps between them have opened up the prospect of squaring the two-match series after crashing to a 281-run loss in the first Test in Mount Maunganui.
South Africa have never lost a Test series to New Zealand but their first-choice players stayed home for the SA20 franchise competition.
HIGHLIGHTS: New Zealand vs Proteas (2nd Test, Day 2)
Piedt took career-best figures on a spin-friendly Seddon Park pitch as seven wickets tumbled in the final session.
The 33-year-old, not selected for the first Test, claimed the key wickets of Kane Williamson for 43 and Tom Latham for 40 after lunch, with New Zealand having started soundly to reach 75-1.
Rachin Ravindra, who hit a double century in the first Test, played on to Tshepo Moreki for 29 at the start of a hectic third session before Piedt took over.
Using good variation and finding decent turn, he removed Glenn Phillips for four and Will Young for 36, along with the last wicket to fall of Neil Wagner, who had raced to 33 off 27 balls before he was stumped.
Dane Paterson was also effective for the Proteas, with his accurate seam bowling earning figures of 3-39.
His first wicket came in the opening over of the innings when struggling opener Devon Conway was caught behind without scoring.
The Proteas started the day at 220-6 but lost their last four wickets in just 8.2 overs as Will O’Rourke tore through the tail to finish with figures of 4-59 on debut.
O’Rourke bowled both of the overnight batsmen, with Shaun von Berg reaching 38 on debut and Ruan de Swardt 64.
© Agence France-Presse
Photo: Hannah Peters/Getty Images