The South Africans are attempting to clinch the World Sevens Series crown this weekend by winning the Paris title, but they will have to win their remaining pool games against Japan and Canada to advance in the Cup competition.
The Blitzboks opened the scoring through captain Philip Snyman, but the Scots took control after that at the Stade Jean Bouin.
Jamie Farndale and Hugh Blake dotted down to secure a 12-5 halftime lead for Scotland, and the Blitzboks found the going tough in the second half and battled to breach their opponents’ defence.
A yellow card to Cecil Afrika for a neck-roll tackle after the break made life even more difficult for South Africa.
Scott Wright scored a third five-pointer, which was converted to extend Scotland’s lead to 19-5.
Siviwe ‘Shakes’ Soyizwapi grabbed a consolation try after the hooter, but it was too little too late for Neil Powell’s team.
The Blitzboks will now face Japan (2.54pm) and Canada (6.42pm) in their last two pool games.