The Junior Boks finished with six tries in a rampant 46-13 victory over rivals Australia in the U20 World Championship.
South Africa were too powerful for their opponents at the scrum and breakdown, booking their semi-final spot in style.
Fly-half Blade Thomson scored 19 points but departed with a shoulder injury before full-time, as Australia's consolation tries from Duncan Paia’aua and captain Andrew Kellaway came too late.
Jacques Vermeulen was back in the starting line-up and crashed over for game's first try running a fine line off Ivan van Zyl, before he was followed over in the first half by loosehead prop Ox Nche after more sustained pressure in Australia's half.
Both tries were converted by Thomson and the fly-half added two more penalties to give South Africa a comfortable 20-3 lead at half-time.
Australia had to score next to keep the game alive but their attack unravelled when the Junior Boks raced up the other end and scored through Khanyo Ngcukana.
Thomson then secured the bonus point which meant South Africa finished in top spot, with Jason Jenkins and Leolin Zas adding tries five and six to wrap up the result.
Kellaway added another try to his record tally in this competition in the final few minutes but Australia were well beaten upfront, denying them a chance to truly compete.
South Africa will now face England on Monday, in a re-match of last year's U20 World Championship final and giving Dawie Theron's side a chance for revenge.
For South Africa:
Tries: Vermeulen, Nche, Ngcukana, Thomson, Jenkins, Zas
Cons: Thomson 4, De Beer
Pens: Thomson 2
Yellow Card: Hermanus, Du Preez
Tries: Paia’aua, Kellaway
Yellow Card: Orr
South Africa: 15 Warrick Gelant, 14 Khanyo Ngcukana, 13 EW Viljoen, 12 Daniel du Plessis, 11 Leolin Zas, 10 Brandon Thomson, 9 Ivan van Zyl, 8 Hanro Liebenberg (c), 7 Jean-Luc du Preez, 6 Jacques Vermeulen, 5 Rudolph Snyman, 4 Jason Jenkins, 3 Thomas du Toit, 2 Joseph Dweba, 1 Retshegofaditswe Nche.
Replacements: 16 Jan van der Merwe, 17 Mzamo Majola, 18 Frans van Wyk, 19. Hyron Andrews, 20 Dan du Preez, 21 Marco Jansen van Vuren, 22 Tinus de Beer, 23 Grant Hermanus.
Australia: 15 Jonah Placid, 14 Tyson Davis, 13 Sione Tuipoloutu, 12 Duncan Paia’aua, 11 Andrew Kellaway (c), 10 Andrew Deegan, 9 James Tuttle, 8 Adam Korczyk, 7 Michael Gunn, 6 Brad Wilkin, 5 Lukhan Lealaiauloto-tui, 4 Ned Hanigan, 3 Matt Sandell, 2 Folau Faingaa, 1 Cameron Orr.
Replacements: 16 Fereti Saaga, 17 Connal McInerney, 18 Tyrel Lomax, 19 Riley Winter, 20 Sam Croke, 21 Harry Nucifora, 22 James Dalgleish, 23 Campbell Magnay.