In their reply to the Proteas\' 525 for 8 declared, the Kiwis closed day two on 47 for 6 at Port Elizabeth.
Port Elizabeth: New Zealand was in tatters at 47 for 6 after South Africa declared its first innings on 525 for 8 on day two of the second Test on Saturday, leaving the rattled tourists sliding toward another heavy and embarrassing defeat.
After three South African batsmen made centuries, Dale Steyn roared in to remove Martin Guptill and Kane Williamson, Rory Kleinveldt dismissed Dean Brownlie and Daniel Flynn, and Robin Peterson had two wickets in two balls at the end of an utterly dominant day for the top-ranked Proteas.
New Zealand limped to stumps still 478 runs behind.
Faf du Plessis earlier hit 137 for his second test century and Dean Elgar was 103 not out for his maiden hundred — adding to Hashim Amla's 110 — as South Africa declared soon after tea.