Kyle Abbott took seven for 29 on his Test debut to send Pakistan crashing to 156 all out on the second day of the third and final Test against South Africa at SuperSport Park.
Pakistan, forced to follow on 253 runs behind, were 1-14 at the close, with Mohammad Hafeez bowled by Dale Steyn with the first ball of the second innings.
It left Pakistan facing an almost hopeless task to avoid a series whitewash.
Abbott, 25, was called into the South African squad as cover for the fast bowlers when regular reserve Rory Kleinveldt was named to replace the injured Morne Morkel.
The leading wicket-taker in domestic first-class cricket found himself in the team when all-rounder Jacques Kallis suffered a calf injury the day before the match.
Abbott's figures were second best on debut for South Africa only to Lance Klusener, his Dolphins franchise coach, who took eight for 64 against India in Calcutta in 1996/97.
He bowled a tight line at a lively pace to take two wickets in an initial Pakistan collapse, which saw them slip from 46 for no wicket to 4-75, then had a spell of five for five as the lower order and tail crumbled.
Abbott said the pressure built by Dale Steyn and Vernon Philander, the two top ranked bowlers in Test cricket, had played a big part in his success.
Six of his wickets were to catches in the slip cordon before he finished off the innings by trapping Younis Khan leg before wicket after the Pakistan veteran had battled for two-and-a-half hours and 86 balls to make 33.
Younis barely had time to take his pads off before he had to face the second ball of the follow-on innings.
Imran Farhat, who made the top score of 30 in the first innings, did not open again after being struck on the hand in the first innings.
X-rays showed no damage and he is expected to bat on Sunday.
Azhar Ali opened with Hafeez, with Younis moving up to number three.
AB de Villiers earlier reached his 16th Test century and his third against Pakistan.
He went on to make 121 before being caught in the deep off left-arm opening bowler Rahat Ali, who finished with six for 127 on his Test debut as South Africa were all out for 409.
Vernon Philander made a Test best score of 74 in helping De Villiers stretch their overnight partnership of 86 to 129 -- a record seventh wicket stand for South Africa against Pakistan -- before he was caught low down at first slip by Mohammad Hafeez off part-time bowler Younis Khan.