The Black Caps require just five more wickets to secure a test series-levelling victory over South Africa.
After posting a first innings total of 489, the New Zealand bowlers ripped through South Africa's top order to have the visitors teetering on the edge of defeat on 80 for five at stumps on day four of the third test in Hamilton.
Black Caps spinner Jeetan Patel proved the biggest handful for the Proteas, picking up the wickets of Hashim Amla and JP Duminy for just 22 runs.
Seamers Matt Henry and Colin de Grandhomme claimed a wicket each, while the fifth came from a run out involving a mix-up between Amla and opener Theunis de Bruyn.
South Africa still trail the Black Caps by 95 runs, but have the experienced batting duo of captain Faf du Plessis and Quinten de Kock still at the crease.
Stand-out partnership for Watling and de Grandhomme
The Black Caps had a 175 lead heading into South Africa's second innings on the fourth day.
The home side made it to 489 before being dismissed all out.
Black Caps wicket keeper BJ Watling was the first wicket to fall after lunch - he made 24, paceman Matt Henry made 12 and Jeetan Patel just five.
Colin de Grandhomme's was the last wicket to fall, reaching 57 before he was caught by keeper Quinton de Kock off the bowling of Morne Morkel.
Watling and de Grandhomme had the stand-out partnership in the afternoon session, putting on 46 runs between them.
South Africa's pace bowlers Morne Morkel and Kagiso Rabada took four wickets each, and spinner Kehsav Maharaj claimed the other two.
South Africa dismissed Mitchell Santner for 41 in the final over before lunch.
Williamson and Santner had resumed on 321 for four, with the skipper on 148 having joined former captain Martin Crowe on a New Zealand record 17 test centuries on Monday.
The hosts, however, found it difficult to re-start their innings as the South African attack put them under immense prolonged pressure.
They scored just 76 runs from 34.2 overs during the elongated session.
Williamson brought up his 150 with a single off Rabada and then looked to be heading towards his second test double-century.
The 26-year-old was instead well caught at fine leg by Vernon Philander off Morne Morkel, prompting the normally phlegmatic Williamson to show his frustration as Philander took the catch just above the grass.
Santner was then dismissed with just four balls remaining in the session, when a delivery from Kagiso Rabada caught the edge and he was snapped up by JP Duminy.
New Zealand need to win the rain-affected test as South Africa lead the series 1-0 having won the second game in Wellington by eight wickets.
The Proteas lead the three-test series one-nil; the first test in Dunedin ended in a draw.