Spinner Nathan Lyon turned the first Test Australia's way and fast bowler Mitchell Starc rammed home the advantage to leave South Africa 162 all out and a distant 189 runs behind at stumps on day two on Friday.
Lyon burst into the game with two wickets in his first five balls, and Starc roared through South Africa's middle and lower order with vicious reverse swing for 5/34, putting the tourists in full control of the series opener.
There were questions over the real value of Australia's first-innings total of 351 at Kingsmead — a score built off the back of allrounder Mitchell Marsh's 96 down the order — but that now was clearly a very strong one after South Africa's struggles against the best bowling attack currently operating in Test cricket.
AB de Villiers, possibly starting his last Test series — he said he was taking it one game at a time — was 71 not out and a class above the other South Africans.
"There's just no excuse, we didn't execute well," de Villiers said. "I just tried to hang out there as long as I could and try and find a partnership with someone."
Only Australia's ruthless attack didn't allow any meaningful partnerships and South Africa's best stand was 42 between de Villiers and Quinton de Kock for the sixth wicket.
The surface was expected to suit spin, but not as dramatically as it did in Lyon's sensational first foray.
Elgar was beaten by turn to spoon a catch back to Lyon, who took it two-handed diving to his right. Three balls later, Amla popped a catch to close fielder Cameron Bancroft and South Africa was 27-2 and immediately under pressure.
"The last two months he's been amazing," Marsh said of Lyon.
Pat Cummins put opener Aiden Markram back in the dressing room to take the teams to tea, and Starc went through captain Faf du Plessis for 15 and Theunis de Bruyn for 6 in the late afternoon to see the Proteas plunge to 108-5.
Lyon returned near the end of the day to bowl de Kock for 20 and finish with 3-50.
Starc, swinging the ball at pace, hastened South Africa's final collapse from 150-5 to all out 12 runs later when he splattered last man Morne Morkel's stumps for his fifth.
Australia escaped from trouble with the bat — the Ashes winner was 177-5 on day one — to push its way up to 351 all out, with the comeback largely down to Marsh and three significant lower-order partnerships he anchored. He fell four short of a second straight Test hundred when he was caught at mid-on trying to hit over the top of the infield to get to three figures.
"The less said (about the dismissal) the better," Marsh said.
Despite that personal disappointment, his innings lifted Australia to a solid first total of the four-match series, and a total that evolved into a completely dominant one after the Australia bowlers made their presence felt.
Marsh put on 60 with Tim Paine for the sixth wicket, 49 with Starc for the eighth wicket, and 41 with Lyon for the ninth wicket. Australia's last five batsmen added 174, nearly as much as the 177 made by the top five.
"That can change a game," Marsh said of the lower-order runs. "They (the tailenders) work really hard back in the nets and it's great to see."
Marsh was the second-to-last wicket to fall as he hit up in the air to mid-on and Morne Morkel reached up to hold onto the catch, giving seamer Vernon Philander his third wicket. Lyon was out an over later for 12 to wrap up Australia's innings. South Africa spinner Keshav Maharaj took 5-123.
Marsh survived a low caught-and-bowled chance to pacer Kagiso Rabada when he was on 42. If Rabada had taken the sharp catch near his ankles as he followed through, Australia would have slipped to 244-7 and Marsh would have been neutralized.
The South African didn't, and Marsh took the Aussies to and beyond 350.