The towering quick ripped through the hosts, again missing captain Michael Clarke who is now in doubt for the first Test against India.
David Warner went for a duck while his catch of the bowling of Dale Steyn removed the other opener Aaron Finch.
Shane Watson scratched about for a 26-ball 11 before being out LBW and Morkel struck again to get right of Steven Smith as the Aussies reeled at 4 for 34.
Captain Bailey looked to provide resistance with his 25 but fell to Vernon Philander, leading Mitchell Marsh to top score with 67.
He fell to Steyn though and Morkel tore through what should have been an impressive tail that included Test all-rounder Glenn Maxwell along with Mitchell Johnson and Nathan Couter-Nile for a total of five to have them all out for 154.
It was a matter of when, not if, the South Africans would reached the total, but the brief innings gave young Aussie quick Josh Hazlewood a chance to shine.
He knocked over Quinten de Kock for four in his first over, along with Faf du Plessis in his second spell. He also claimed AB de Villiers in his 5 for 31 but not before the Proteas captain had smashed a quickfire 48 off 41 balls to put his side in the box seat.
David Miller (22no) and Steyn (4no) stuck around to finish off the job for a three wicket win.
Image via Getty