A fired-up Dale Steyn removed both New Zealand openers to leave the tourists on 15 for two before rain ended day two of the first test against South Africa on Saturday.
Steyn, playing his first test of 2016 after injury, had Tom Latham (four) caught by Hashim Amla at first slip before trapping Martin Guptill (seven) lbw.
New Zealand are replying to the home side's 263 all out and will hope for better batting conditions on Sunday after the South Africans were able to find prodigious swing and movement off the wicket in what is a first ever winter test in Durban.
Captain Kane Williamson and the experienced Ross Taylor, both on two not out, will resume on the third day, when early morning rain is expected to give way to sunshine for the remainder of the test.
They had some good fortune in battling their way to lunch, which arrived six minutes early when rain forced the players from the field. No further play was possible.
Steyn was not only threatening but miserly too, conceding just three runs from his six overs.
Seamer Vernon Philander also made an impressive return to test cricket after 10 months on the sidelines through injury and was unlucky not to get the wicket of Latham when Dean Elgar dropped a simple chance in the slips.
Earlier, New Zealand needed 10 overs to take the final two South African wickets after the hosts resumed on 236 for eight following a 50-minute rain delay.
They were held up by a career-best unbeaten 32 from young fast bowler Kagiso Rabada, who looked composed before running out of partners.
Seamers Trent Boult (3-52) and South African-born Neil Wagner (3-47) were the pick of the New Zealand bowlers.
New Zealand first innings: 15 for 2 (Williamson 2*, Taylor 2*, Steyn 2-3)
South Africa first inning 263 all out(Amla 53, Wagner 3-47, Boult 3-52)