New Zealand's seamers scythed through South Africa's top order to restrict the Proteas to 42 for three in their second innings and a lead of 113 runs at tea on day three of the second and final test in Christchurch on Sunday.
Tim Southee trapped opener Sarel Erwee lbw for eight, then had South Africa captain Dean Elgar caught behind for 13 on a cold and overcast afternoon at Hagley Oval.
Matt Henry sent a chill through South Africa late in the session as he bowled number three Aiden Markram for 14.
Rassie van der Dussen was seven not out, with Temba Bavuma yet to score, as New Zealand dominated the session after being bowled out for 293.
All-rounder Colin de Grandhomme earlier held on for a defiant century to bring New Zealand back into the match, strolling off the ground unbeaten on 120.
He and Daryl Mitchell combined for a 133-run stand after coming together on day two with their team in peril at 91 for five.
De Grandhomme survived a nervous period in the 90s before hitting spinner Keshav Maharaj for three shortly before the break to bring up his second test century.
Maharaj finally broke their partnership by trapping Mitchell lbw for 60.
Seamer Marco Jansen grabbed his third wicket just before lunch, having Kyle Jamieson hit to leg gully to be out for 13 after being softened up by a short-pitched assault.
De Grandhomme and Neil Wagner (21) thrashed South Africa's bowlers around the ground in a valuable 38-run partnership after the lunch until Wagner was caught slogging Kagiso Rabada to fine leg.
Rabada topped South Africa's bowling with 5-60, wrapping up New Zealand's innings by having Henry caught for a duck.
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 the South Africans.
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.
Check out DH's latest videos: