South Africa beat Portugal and France before losing to the USA on the opening day of the London Sevens.
The Blitzboks finished second in Pool C and will meet Fiji in the Cup quarter-finals on Sunday. If they beat the Fijians and go on to win the tournament they will also lift the World Series trophy.
Stephan Dippenaar scored a brace before Rosco Speckman crossed for a third try as the Blitzboks blanked Portugal 19-0 in their opening game.
South Africa then followed up with a 28-7 victory over France, courtesy of a Seabelo Senatla double and a try each from captain Kyle Brown and Carel du Preez.
But the Blitzboks came unstuck against the USA in their Pool C decider, losing 21-12. Neil Powell's team were quick out of the blocks with Dippenaar running in the first try after some good breakdown work by Werner Kok, who accounted for South Africa's second try. Justin Geduld converted to extend their lead to 12-0.
The sin-binning of Brown late in the first half proved costly as the USA scored twice in his absence through Garrett Bender and speedster Perry Baker.
The Blitzboks might have snatched back the lead when Dippenaar went over the tryline, but he couldn't control the ball, with Carlin Isles sealing the result with a third try for the USA.
Sunday's Cup quarter-finals:
Fiji vs South Africa (11:28)
Scotland vs Australia (11:50)
USA vs Canada (12:12)
New Zealand vs England (12:34)
Photo: Martin Seras Lima/World Rugby