Kagiso Rabada starred in what will be his final match of the series between South Africa and Australia as the Proteas levelled the series with a six-wicket win in the second Test.
The fast bowler took 11 wickets in the match, including three on the fourth morning, as South Africa swiftly took the five wickets they needed to wrap up Australia's second innings.
The hosts were left needing just 101 to win and, despite a couple of nervy moments, reached their target midway through the afternoon session.
However, Rabada (6-54) will miss the remaining two Tests after being found guilty of two separate charges during the match, a level one charge for giving David Warner a send-off added to the level two charge for making should contact with Steve Smith after dismissing him on day one earning him a total of four demerit points and a two-Test ban.
The punishment was confirmed at the end of play but the potential suspension did little to affect his performance on day four though as the 22-year-old fast bowler got South Africa up and running in the morning session, getting the ball to nip back to Mitchell Marsh (45) and uproot his off stump.
Pat Cummins (5) and Mitchell Starc (1) followed soon after, Lungi Ngidi (2-24) had Nathan Lyon caught behind and when Josh Hazlewood (17) holed out off Keshav Maharaj (2-90), Australia were 239 all out.
Lyon had Dean Elgar (5) caught and bowled with the last ball before lunch and when Hazlewood removed Aiden Markram (21) shortly after the resumption, Australia sensed an opportunity.
However, AB de Villiers was not going to bow to the pressure and instead went on the counter-attack, hitting four fours and a six to put an end to any hopes Australia had of snatching victory.
De Villiers (28) and Hashim Amla (27) fell in space of three balls but Faf du Plessis and Theunis de Bruyn knocked off the remaining 20 runs required to ensure a fierce-contested series remains right in the balance.
Using skysports.com? Comment below to get involved in the debate, but please adhere to our House Rules. If you wish to report any comment, simply click on the down arrow next to the offending comment and click 'Report'.