South Africa will face Australia at 09h27 (SA time), while Argentina and Spain will slug it out for the other final spot on the last day of the tournament.
The win over Fiji was impressive. Clearly stung by a close 19-17 loss to Argentina in their final pool match earlier in the day, they swamped Fiji with relentless defence and when the opportunities came, were lethal on attack.
The Blitzboks took the lead through a Shilton van Wyk try in the second minute of play, after several phases kept the Fijian defence scrambling. Ronald Brown converted for a 7-0 lead.
From the restart, Selvyn Davids found himself in possession, cleverly kicked ahead and won the race to the ball in the in-goal area. The conversion was wide, but the momentum firmly with the Blitzboks.
The second half saw more of the same, with the men in green and gold swarming and frustrating the Fijians, who conceded two yellow cards, with the second also resulting in a penalty try to South Africa.
A quick counterattack found Nortje in space near the line, but he was tackled from an offside position and prevented from scoring a try.
At 19-0, the Blitzboks used good game management to play out the rest of the half and a spot in the final four.
Earlier on Saturday, Argentina edged the Blitzboks in their final pool match, winning 19-17 after leading 19-0 at the break. The South Africans were very slow out of the blocks against the South Americans, the defending champions in Perth, and conceded three tries in the opening half.
They could not hold out the Argentina attack, boosted by territorial and possession dominance.
The second half was a completely different picture though and tries by Quewin Nortje, Selvyn Davids and Shilton van Wyk brought them back into the game. Sadly, their conversion attempts were not at the same level.
Scorers:
Blitzboks 19 (12) Fiji 0
Blitzboks - Tries: Penalty try, Shilton van Wyk, Selvyn Davids. Conversion: Ronald Brown.
Blitzboks 17 (0) Argentina 19 (17)
Blitzboks - Tries: Quewin Nortje, Selvyn Davids, Shilton van Wyk. Conversion: Ronald Brown.
Argentina - Tries: Matteo Graziano, Marcos Moneta, Matías Osadczuk. Conversions: Joaquin Pellandini (2).