All-rounder Colin de Grandhomme struck a belligerent half-century to steady New Zealand in the second Test on Saturday after South Africa's seamers torched the home side's top order during a see-sawing day two in Christchurch.
New Zealand were under pressure at 157 for five at stumps, still 207 runs short of South Africa's first innings total of 364.
De Grandhomme was 54 not out and Daryl Mitchell on 29, their unbroken 66-run partnership having halted South Africa's march on a chilly, overcast day at Hagley Oval.
"South Africa batted really well on a tough wicket," Mitchell told reporters.
"For us now it's about trying to put pressure back on them and see what happens tomorrow."
The Proteas, 1-0 down in the series, lost all three of their reviews seeking extra wickets but would be well pleased with their work.
Pace spearhead Kagiso Rabada grabbed three wickets and Marco Jansen two, the pair rattling through New Zealand's top order after South Africa were bowled out before tea.
"Tomorrow we're just going to go hard, try to make them play as much as possible and try to force them to make a mistake because it is quite a good batting wicket," said Jansen.
"The plan for tomorrow is just to be as tight as possible."
Rabada quickly removed both New Zealand's openers, with skipper Tom Latham caught down the leg-side for a duck, and Will Young nicking behind for three.
Jansen reduced New Zealand to 51 for three, having Devon Conway caught behind for 16.
Mitchell lived dangerously through his 78 balls, surviving two lbw reviews off the bowling of all-rounder Wiaan Mulder and a third in the final overs off third seamer Lutho Sipamla.
In-form batsman Henry Nicholls scored a fluent 39 for New Zealand but trudged off ruefully after hitting Jansen straight to a trap at backward point.
Wicketkeeper Tom Blundell became Rabada's third victim when bowled for six.
South Africa started the day in a position of strength at 238 for three but lost four wickets in the morning, the spoils shared by Neil Wagner and Matt Henry.
It took tailenders Jansen (37 not out) and Keshav Maharaj (36) to wrest back the momentum with a valiant 62-run partnership for the ninth wicket before New Zealand's towering pacer Kyle Jamieson wrapped up the innings.
Wagner finished the pick of New Zealand's bowlers with 4-102, dismissing Rassie van der Dussen (35) and all-rounder Wiaan Mulder (14) in the morning.
New Zealand, who thrashed the Proteas by an innings and 276 runs in the first meeting in Christchurch last week, need only draw the match to claim their first ever series win over South Africa.
Victory, however, would see the Black Caps dislodge Australia as the world's number one Test side, while shoring up their World Test Championship defence with maximum points.