South Africa lost two wickets after tea but pushed their lead over New Zealand to 211 runs by the close of day three to leave the second test delicately poised in Christchurch on Sunday.
Fiery Black Caps paceman Neil Wagner had Rassie van der Dussen caught and bowled for 45, and Temba Bavuma caught in close for 23 at Hagley Oval, but South Africa dug in to be 140 for five at stumps in their second innings.
Wicketkeeper Kyle Verreynne was 22 not out and all-rounder Wiaan Mulder on 10, the pair's steadying 36-run partnership boosting the Proteas' chances of batting New Zealand out of the game.
"We're reasonably happy, I would say. Not entirely happy," Van der Dussen told reporters.
"They've got some world class bowlers in terms of their discipline. They really don't give you much.
"If we can get through their first spells, their bodies will be sore... I think it will go a long way for us."
A Colin de Grandhomme century pushed New Zealand to 293 in reply to the Proteas' first innings 364, before the hosts' seamers scythed through their top order to restrict them to 42 for three at tea.
Tim Southee trapped opener Sarel Erwee lbw for eight, then had South Africa captain Dean Elgar caught behind for 13.
Matt Henry bowled number three Aiden Markram for 14.
That New Zealand remain in the game is credit to all-rounder Colin de Grandhomme, who strolled off with 120 not out, having anchored a 133-run stand with Daryl Mitchell.
The pair came together with their team in peril at 91 for five on day two.
Spinner Keshav Maharaj finally broke their partnership by trapping Mitchell lbw for 60.
De Grandhomme survived a fraught period in the 90s before hitting Maharaj for three shortly before lunch to bring up his second test century and first since 2017.
De Grandhomme, who scored 45 in the first test, has made the most of his recall after missing out on selection for the India tour in late 2021 and the home series against Bangladesh.
"It was a pretty good wicket, so it wasn't too much to worry about. Just see the ball, hit the ball," said the plain-spoken all-rounder.
"It might just get slower and a bit lower, but that's about it. It's still a good batting wicket."
He and Neil Wagner (21) put the pressure back on South Africa after lunch with a swashbuckling 38-run partnership until Wagner was caught slogging Kagiso Rabada to fine leg.
Pace spearhead Rabada finished with 5-60 to top South Africa's bowling.
New Zealand thrashed the Proteas by an innings and 276 runs in the first meeting in Christchurch, and need only a draw in the second and final test to claim their first ever series win over South Africa.
Victory, however, would see them dislodge Australia as the world's number one test side, while shoring up their World Test Championship defence with maximum points.