The Boks will play their old foe England, who they beat in the 2019 final in Japan, after a performance in the French capital that was nothing short of heroic.
It was a magnificent occasion, well worthy of a final, and the dimwits at World Rugby who three years made the draw ridiculously early should be escorted to the guillotine.
It is criminal that the best teams in the world were sandwiched into one half of the draw and now we have Ireland, the No1 ranked team in the world, and France who are out of the semi-finals.
There can be no occasion in rugby bigger than the host nation of a World Cup going up against the current champions in a play-off and the Boks were thrust on to the back foot from the first whistle by the supercharged French.
With nearly 90 000 of their countrymen screaming them on, the French were virtually unstoppable in the early moments and their prop Cyril Baille surged over the line after just 90 seconds.
The Boks had to respond quickly to avoid being swept away by the blue wave, but not even the most fanatical Bok supporter could have foreseen their team hitting back instantly, and quite magnificently.
Pieter-Steph du Toit had won a turnover soon after the restart, Cobus Reinach kicked it high and handsome, and the ball bounced favourably for Kurt-Lee Arendse to gather and scamper to the line
Manie Libbok steadied South African nerves when he nailed the conversion and it was 7-7 after as many minutes.
The flyhalf minutes later hoisted the ball across field where the ubiquitous Arendse plucked it out of the air and it was centre Damian de Allende who roared to the French line. He was stopped just short, but a few phases later he crashed over for a fantastic Springbok score.
The French thundered back and hooker Peato Mauvaka profited when a quick tap penalty was taken in the Bok 22 and he could not be stopped at the corner flag.
In a match of unrelenting drama, the Boks denied the French the conversion points when Cheslin Kolbe charged down kicker Thomas Ramos.
That left the score at 12-12, but Kolbe had only warmed up and a minute after the restart Jesse Kriel manufactured a perfect grubber kick through the defence for Kolbe to gather and hurtle to the line. Libbok nudged home the conversion to give his team a 19-12 lead.
This match was played at a soaring tempo and the French surged back with a try to hooker Cyril Baille, and after 30 minutes it was locked up at 19-19.
A minute before half-time there was a massive moment when Bok bruiser Eben Etzebeth was sin-binned — the Boks’ first card of the tournament — when he accidentally collided high with a French player. As he trudged to the sideline, Thomas Ramos kicked his team into halftime lead.
Just five minutes in to the second half Bok boss Rassie Erasmus rolled the dice when he replaced his halfbacks, introducing Handre Pollard and Faf de Klerk, plus bringing on X-factor lock RG Snyman for Franco Mostert.
But it was France who scored next when 12 minutes into the tensest of halves, the Boks conceded a scrum penalty for Ramos to convert into a 25-19 lead.
It was around this point that referee Ben O’Keefe succumbed to the pressure of the French crowd when he made the awful call to penalise the surging Bok pack for holding on (Kwagga Smith) when it was not the case. They could have scored but for that sabotage from the Kiwi official.
But the New Zealander had to keep his whistle in his pocket when the Boks blasted ever onwards and Etzebeth cruised over the line.
Pollard converted and a minute later kicked a vital long-range penalty to push the Boks into a 29-25 lead with ten minutes to go.
A Ramos penalty pulled France to within a point with seven minutes left, but it was not enough.
Springboks 29 — Tries: Kurt-Lee Arendse, Cheslin Kolbe, Damian de Allende, Eben Etzebeth. Conversions: Manie Libbok (2), Handre Pollard. Penalty: Pollard.
France 28 — Tries: Cyril Baille, Peato Mauvaka. Conversions: Thomas Ramos (2). Penalties: Ramos (2).