An undefeated century from Alviro Petersen helped South Africa reach 252 for three after they had skittled embattled New Zealand for 45 on a spectacular opening day of the first Test on Wednesday.
New Zealand, dogged by the controversy surrounding the sacking of former captain Ross Taylor, capitulated to the South African pace attack with their innings lasting 19.2 overs as fast bowler Vernon Philander completed remarkable figures of five for seven.
"Hearing on Monday that I was fit to play really spurred me on, and I always love playing at Newlands. It's my home crowd and my home venue, and this is where I love to play my cricket so I'm very happy," Philander, who recovered from a hamstring tweak to play, told reporters.
Morne Morkel and Dale Steyn cleaned up the tail, the latter picking up his 300th Test scalp and South Africa's perfect day was complete when all-rounder Jacques Kallis passed the milestone of 13,000 Test runs shortly after tea.
New Zealand's total was the eighth-lowest in Test history and the lowest since 1974, only Kane Williamson reaching double figures with a score of 13.
South Africa had two overs to face before the lunch break and captain Graeme Smith became the 11th victim of the morning session when Doug Bracewell trapped him lbw for one.
But Petersen and Hashim Amla consolidated in the second session and a century stand put the hosts in total control of the game.
Amla fell for 66 shortly before tea but Petersen reached his fifty off Bracewell in the first over after the interval.
Kallis brought the crowd to their feet when he blazed a boundary through backward point to become only the fourth player and first South African to score 13,000 Test runs.
Kallis cruised to his 57th half-century but the second century partnership of the innings ended when Trent Boult had the all-rounder caught behind for 60 with the total on 212 for three.
The stylish Petersen has been criticised for failing to convert starts into big scores, but he silenced the doubters when he brought up his fifth Test century in the penultimate over with a guided shot behind point for two.
Petersen will resume on day two on 103 with his partner AB de Villiers on 19.
Philander earlier claimed five quick wickets as South Africa made New Zealand skipper Brendon McCullum pay for choosing to bat first.
Philander struck in the second over when he had Martin Guptill caught behind for one.
That triggered an ignominious procession for the New Zealanders with Philander removing McCullum, Dean Brownlie and Williamson in his next three overs as the visitors lost their top order for 27 runs inside 10 overs.
Morkel (three for 14) soon got into the act, removing James Franklin caught at first slip for one.
Steyn reached the 300 mark when he returned after a barren first spell to remove Bracewell's off-stump with a fine out-swinger.
Morkel claimed the wickets of Jeetan Patel and Boult before Steyn picked up the final wicket when Daniel Flynn, who survived 28 deliveries, skied a catch back to the fast bowler.
"We treat each game with respect, and we've got to start off fresh tomorrow morning," Philander added.
"There'll definitely be a little bit in the wicket tomorrow morning. I don't think it's going to be as easy in the second innings, so I think the bowlers are going to have to work hard and stay disciplined."
Follow Emirates 24|7 on Google News.