Australia, who elected to field after winning the toss, were punished for their decision as South Africa recovered from early setbacks to post 425 for nine declared. Bavuma's outstanding innings, supported by Marco Jansen and Simon Harmer, laid the foundation for a dominant victory.
Bavuma anchored the innings with 179 from 334 balls, striking 18 fours and a six. He showed patience and excellent judgement against Australia's attack, providing the stability South Africa needed after losing three early wickets for just 25 runs.
Jansen played an important supporting role, scoring an aggressive 85 from 100 deliveries, including nine fours and three sixes. His partnership with Bavuma added 132 runs for the seventh wicket and shifted the momentum firmly towards the hosts.
Harmer then contributed 82 from 157 balls, helping Bavuma put together a crucial 183-run partnership for the eighth wicket. South Africa moved beyond 400 before declaring at 425 for nine.
Australia's Scott Boland was the pick of the visitors' bowlers, claiming five wickets for 81 runs. Mitchell Starc took three wickets, but Australia struggled to contain South Africa's lower order.
The visitors' first innings quickly unravelled as Jansen ripped through their batting line-up. The left-arm fast bowler claimed five wickets for 33 runs, while Wiaan Mulder took two for 14 and Kagiso Rabada finished with two for 33.
Australia were dismissed for just 99, leaving them facing a substantial deficit and the prospect of following on. Steve Smith top-scored with 28, but the former Australia captain received little support as South Africa's bowlers maintained relentless pressure.
Forced to bat again, Australia showed greater resistance, led by Travis Head. The left-hander scored a determined 121 from 190 balls, hitting 12 fours and two sixes, to give the visitors some hope of extending the contest.
Head found support from Marnus Labuschagne, who made 39, but South Africa continued to take wickets at important moments. Rabada claimed four wickets for 77 runs in the second innings, while Harmer took three wickets to help finish off the Australian resistance.
Australia were eventually dismissed for 295, leaving South Africa with an innings victory and a 31-run margin to level the series 1-1 with one to play in Cape Town. Their inability to recover from the first-innings collapse proved decisive despite Head's century.
Bavuma was named player of the match for his outstanding 179, an innings that set the tone for South Africa's dominance. Jansen's five-wicket haul and valuable batting contribution, along with Harmer's all-round performance, were also central to the result.