Dale Steyn and Rory Kleinveldt ripped out New Zealand's top order batsmen as South Africa took control on the second day of the second and final Test at St George's Park on Saturday.
New Zealand were reeling at 47 for six at the close, a massive 478 behind South Africa's first innings total of 525 for eight declared, needing another 279 to avoid the follow on.
There were three centurions in the South African innings, with Faf du Plessis (137) and Dean Elgar (103 not out) joining first day hero Hashim Amla, who added only four to his overnight score before being dismissed for 110.
Steyn, bowling his fastest spell of the summer, had Martin Guptill and Kane Williamson caught in the slips in his first three overs.
Then the strongly-built Kleinveldt, who replaced the injured Vernon Philander, produced a snorter of a delivery to have Dean Brownlie caught behind off his gloves. Kleinveldt followed up with a full ball which trapped Daniel Flynn leg before wicket.
New Zealand captain Brendon McCullum survived the pace bowling onslaught, only to succumb to the second ball of spin.
He played a loose drive against left-arm spinner Robin Peterson to be caught at slip for 13, eked out over 98 minutes and 61 balls.
New Zealand's woes continued when debutant Colin Munro was out first ball, caught at short leg off Peterson.
New Zealand were 39 for six and in danger of being dismissed for fewer than the disastrous 45 all out which doomed them to an innings defeat in the first Test in Cape Town. But that humiliation was avoided when BJ Watling cut Steyn for four in the last over of the day.
South Africa were made to struggle for runs early, adding only 65 runs in 29 overs before lunch.
The first 11 overs produced only 11 runs for the loss of Amla's wicket as Trent Boult and Doug Bracewell bowled accurately in overcast conditions.
Du Plessis and Elgar played through the difficult period and lifted the tempo during the afternoon.
The pair shared a sixth wicket stand of 131, a record for South Africa against New Zealand as the home side added 105 runs between lunch and tea.
Du Plessis, stuck on 99 at lunch, reached his century when he hit the first ball he received after the interval, from off-spinner Jeetan Patel, for six.
The left-handed Elgar, struggling to establish himself in a strong South African batting line-up, played some fine attacking shots, particularly against off-spinner Jeetan Patel, and hit left-arm pace bowler Neil Wagner for a soaring six over long-on as he attempted to reach his maiden century before tea.
He was on 91 at tea and the declaration was delayed until he reached his hundred in the sixth over after the break.