Vernon Philander took the first five wickets as New Zealand were bowled out before lunch after winning the toss and batting on a well-grassed pitch.
That the pitch contained no real demons was shown as South Africa reached 252 for three, a lead of 207, by the close, with Alviro Petersen making 103 not out. Hashim Amla made 66 and Jacques Kallis became the fourth man to make 13,000 Test runs on his way to scoring 60.
South Africa needed only 12 overs to take a first innings lead after a sensational performance by their bowlers, led by Vernon Philander, who took the first five wickets in the space of 20 balls.
Philander had figures of five for seven from six overs. Morne Morkel took three for 14 and Dale Steyn two for 18.
New Zealand's total was the third lowest in their history and the joint 12th lowest in Test cricket.
Steyn captured his 300th Test wicket when he bowled Bracewell but his achievement was overshadowed by Philander, who claimed his eighth five-wicket haul in his 13th Test match.
Although the pitch gave some help to the fast bowlers, South Africa's free-scoring reply showed there was nothing untowards in the surface. Captain Graeme Smith was leg before wicket to Doug Bracewell for one to become the eleventh man dismissed before lunch, but Hashim Amla and Alviro Petersen shared a second wicket stand of 107.
Amla hurried to a half-century off 55 balls before he walked across his stumps and was leg before wicket to James Franklin for 66.
Kallis then helped Petersen add 104 for the third wicket. It was his ninth half-century at his home town ground to go along with nine centuries. He looked in total control before edging a drive at a ball from left-armed fast bowler Trent Boult.
When he went past 20 Kallis joined Sachin Tendulkar, Ricky Ponting and Rahul Dravid in scoring 13,000 runs in Tests.
New Zealand contributed substantially to their collapse with uncertain foot movement against Philander, who stuck to his tried and tested method of bowling in a tight channel at a lively pace, making the ball deviate in either direction.
It was also the lowest total at Newlands in more than a century, two runs worse than the 47 all out by Australia at the start of last season. South Africa were dismissed for 35 and 43 in two matches against England in 1898/99 and 1888/89 in their early forays into Test cricket.
The lowest total by New Zealand - and the world record low - was 26 against England in 1954/55. They were all out for 42 against Australia in Wellington in 1945/46.
Brendon McCullum, New Zealand's new captain, had to do without Peter Fulton - on an injury list including Daniel Vettori and Tim Southee.
McCullum opened the batting with Martin Guptill.
Smith indicated he would also have batted had he won the toss but noted there was some moisture in the pitch and that there might be some early life for the fast bowlers.
In the circumstances it was crucial that New Zealand made a solid start through McCullum, Guptill and Kane Williamson, their top three batsmen, with a largely unproven line-up to follow.
That, however, did not happen as the tourists collapsed.
* Agence France-Presse