United States were among four teams to progress to the quarter-finals of the World Rugby Sevens with unbeaten records in Singapore. The top four at the end of the 2019 series will qualify directly for Tokyo 2020.
"Our expectation here in Singapore is to try and build on our performance in Hong Kong", England captain Tom Mitchell said.
The two-day Singapore Sevens saw a total of 57,000 spectators at the National Stadium.
England had earlier beaten Australia 31-19 in the quarter-finals, but lost their semi-final 26-12 to Fiji.
South Africa sits in fourth place in the World Series standings with 121 points while Fiji is second with 142 points.
Later on Sunday, the South Africans will take on the US in a semifinal match at 9:50am, while with the other last-four encounter will be contested between Fiji and England.
A South African victory seemed impossible Sunday after a first half in which Fiji ran riot, exploiting handling errors and poor tackling to score three brilliant tries.
Fiji flew into the lead in the opening seven minutes, looking unstoppable, as Aminiasi Tuimaba, Napolioni Bolaca and Vilimoni Botitu made their intensity count on the scoreboard.
"South Africa head coach Neil Powell said he was "thrilled" with the fightback which was "reward" for the effort his players put in over the weekend".
But the Blitzboks roared back in the second spell, with Kurt-Lee Arendse, Angelo Davids and Ryan Oosthuizen dotting down to cut the deficit to two points with two minutes remaining, while Aminiasi Tuimaba was also shown a yellow card for a risky tackle.
The win takes South Africa to 121 points on the World Series Sevens standings, still in fourth place behind New Zealand (130), Fiji (142) and leaders U.S. (145).
The floodgates opened in the second half with the Blitzboks chalking up 24 unanswered points. But a penalty for offside gave South Africa a last chance and Selvyn Davids slotted the winning penalty. "They hung onto every word we said and started to believe it".