The victory looked unthinkable when Australia were 158 for none early on day two.
Set a mammoth victory target of 539, the home side's second innings ended on 361 on the final day, handing the visitors victory by 177 runs and maintaining their unbeaten record in four Tests at Perth's WACA Ground.
The victory looked unthinkable when Australia were 158 for none early on day two in reply to South Africa's 242, and especially when the visitors lost strike bowler Dale Steyn to a shoulder injury.
Debutant spinner Keshav Maharaj (1-94) delivered the final blow, trapping number 11 Nathan Lyon lbw for eight, the decision upheld despite an Australia review and leaving Peter Nevill unbeaten on 60.
It was Australia's fourth successive Test defeat, after being beaten in all three Tests on their July-August tour of Sri Lanka, and the first time they had lost the opening Test of their home season since 1988.
"That's one of the most special days, to turn it around 360 degrees from day one where we were under the pump," du Plessis said of day two.
"We were a seamer down pretty much the (whole) Test match and we always joke that if you are a seamer down in a three-seamer attack, it is 99 percent impossible.
"Somehow we managed to do it and much of the credit goes to this man (Rabada) and also Keshar (Maharaj).
"That is right up there with the best match in my Test career."
Australian captain Steven Smith lamented the way his side failed to capitalise on its early dominance.
"The most disappointing thing from my aspect was we were in a position to be able to drive the game," he said.
"We had another big collapse and we weren't able to capitalise on what the openers did to put us in a great position.
"Every aspect of our game needs improving."
Resuming at 169 for four, a draw was Australia's only hope and it appeared a forlorn task, with man-of-the-match Rabada ensuring that was the case with 5-92.
With star paceman Steyn suffering a shoulder injury that will sideline him for at least six months, Rabada stepped up in fine style to lead the South African attack.
The 21-year-old claimed three wickets on day four and two more on Monday to record his fourth five-wicket haul in just nine Tests, a record for a South African player of his age.
The rot set in early for Australia on the final day, when a searing Rabada yorker hit Mitchell Marsh on the pad on 26, although he was given not out by umpire Aleem Dar.
The South Africans reviewed the decision and were successful, ending a 50-run stand between Marsh and Usman Khawaja and striking the first blow of the day.
Rabada then grabbed his fifth wicket when he trapped Mitchell Starc lbw with another fast yorker for 13.
Rabada is shaping as a perfect long-term replacement for Steyn, having also claimed the wickets of Shaun Marsh (15), Smith (34) and Adam Voges (1) on the fourth day.
JP Duminy capped his fine match, having made a century in South Africa's second innings, by claiming the wicket of Khawaja with his part-time spin, lbw for 97.
Dimunitive batsman Temba Bavuma, who produced one of the great run-outs on the fourth day to dismiss David Warner, was brought on to bowl and almost struck with his first ball in Test cricket.
It skidded through and struck Khawaja right in front of the stumps, but Bavuma had overstepped and it was a no-ball, denying him the honour of becoming just the 21st bowler to claim a wicket with his first ball in Test cricket.
However, Bavuma had his moment later in the innings, breaking an obdurate 65-run wicket ninth-wicket stand by having Josh Hazlewood caught off a leading edge for 29.
South Africa had declared their second innings on 540 for 8 after lunch on the fourth day to set Australia a record run chase.