A Kagiso Rabada five-for helped South Africa wrestle control of day one of the second Test against Australia, as the hosts skittled the visitors for 243.
Rabada overcame a wayward opening spell to finish with impressive figures of 5-96, and found himself on a hat-trick at one point as four wickets fell for just nine runs.
Australia began their innings well enough after bravely electing to bat first in overcast conditions, on a pitch with a healthy covering of grass, as their openers put on 98 for the first wicket.
In a circumspect start, Cameron Bancroft and David Warner scored just 18 runs in the first 13 overs, before Warner - fresh from his fine following an altercation with Quinton de Kock in the first Test - broke free, top-scoring with his 100-ball 63.
But, Bancroft fell to the final ball before lunch, edging the miserly Vernon Philander (2-25) behind and, after the interval, the wheels began to come off the Australian innings.
Philander also got Usman Khawaja (4) fending behind cheaply, while promising 21-year-old quick Lungi Ngidi (3-51) took the key wicket of Warner, clean bowled.
Visiting skipper Steve Smith (25) and Shaun Marsh (24) rebuilt briefly before Rabada's sensational spell utterly blew away the Australian middle-order as they slipped from 161-3 to 170-7.
Smith and Marsh were first trapped lbw, the unwell Mitchell Marsh (4) edged behind with a wild swing of the bat on the stroke of tea, and then Pat Cummins was picked up with the very first ball after the interval.
Rabada couldn't get the hat-trick, but did add a fifth victim soon after, bowling Mitchell Starc (8), before the tail wagged somewhat - wicketkeeper-batsman Tim Paine the last wicket to fall for 36.
In 12 overs of batting before stumps, South Africa lost opener Aiden Markram (11), lbw to Cummins (1-9), bringing Rabada to the crease as night-watchman and his fine day continued as he blasted four boundaries on his way to 17 not out - the Proteas closed on 39-1, trailing by 204.
Watch day two of the second Test between South Africa and Australia, live from 7.55am on Saturday on Sky Sports Cricket.