South Africa won by six wickets after Rabada's fast bowling ensured they needed to chase a modest 101 runs for victory.
The fast bowler, who faces a ban from the remaining two Tests of the series, took six for 54 as Australia were bowled out for 239 in their second innings.
South Africa lost four wickets before Theunis de Bruyn hit the winning runs.
AB de Villiers, whose 126 not out enabled South Africa to lead by 139 runs on the first innings, hit a quick 28 off 26 balls before he was caught at short leg off Nathan Lyon with 20 runs still needed.
Also Read
There was a shadow hanging over the 22-year-old fast bowler, however.
He attended a disciplinary meeting convened by match referee Jeff Crowe on Sunday night after being charged with a level two offence following an incident in which his shoulder made contact with Australian captain Steve Smith on the first day.
The verdict was expected to be announced after the match. If found guilty Rabada will face a two-Test ban because of previous offences on his record.
Rabada struck in the first over of the morning when he bowled Mitchell Marsh for 45 with a ball which swung in sharply.
Pat Cummins fell to a sharp catch at gully by Theunis de Bruyn and Mitchell Starc edged a drive to wicketkeeper Quinton de Kock.
Lyon was caught behind off Lungi Ngidi and last man Josh Hazlewood hit a quick 17 before being caught in the deep off left-arm spinner Keshav Maharaj.
Tim Paine was left unbeaten on 28.
Aiden Markram had an escape in the second over of South Africa's chase. With his score on six he was dropped at first slip by Mitchell Marsh off Hazlewood.
Markram made 21 before he was caught by Smith at second slip off Hazlewood.
Hashim Amla and De Villiers added 49 before both were dismissed with the total on 81. Amla was caught behind off Pat Cummins for 27 and De Villiers fell to Lyon three balls later.
Disclaimer: No Business Standard Journalist was involved in creation of this content