New Zealand stifled South Africa's pace out wide to win the Vancouver Sevens 19-14 and edge to within two points of competition leaders Fiji.
South Africa scored first and last, but the All Blacks Sevens controlled play for the rest of the match through tries from Sam Dickson, Kurt Baker and Lewis Ormond.
The win went some way towards avenging New Zealand's 14-7 quarter-final loss to South Africa in last week's Las Vegas Sevens.
Rosko Specman opened the scoring after four minutes, chasing down the long kick ahead to scramble over in Kurt Baker's despairing tackle for the try which gave South Africa a 7-0 lead.
The Kiwis levelled the scores two minutes later, Liam Messam creating space out wide with a strong run through the middle before releasing a sweetly timed pass for Dickson to dot down.
Dickson climbed high to secure possession from the re-start, offloading for Baker to cross and give New Zealand a 14-7 lead at half-time.
The second spell turned into a war of attrition, the decisive moment coming with just over two minutes on the clock when Lewis Ormond's pace out wide won New Zealand the crucial try.
With just 30 seconds left on the clock, Seabelo Senatla raced away to score and give South Africa a glimmer of hope, only for the game to end abruptly when they sent the restart out on the full.
Meanwhile, Australia finished third after beating Fiji 19-14 in the third-place playoff, where Quade Cooper's up-and-down initiation continued.
He kicked a vital goal to give Australia the lead late, but also dropped the ball in space to hand Fiji a late first-half try.
"It was good to be out there," Cooper said. "I'm feeling it right now ... I'm going to search around now and see if I can find my lungs which I left out there."
Cooper played the full match against Fiji, after only taking to the field with two minutes remaining in the semifinal and spending their 24-17 quarterfinal win over Scotland on the bench.
In a positive sign just five months out from the Olympics, the tournament marked the first time Australia had reached three consecutive semi-finals since the 2002-03 season.
Australia remain fourth in the overall standings, with four events to play in the 10-legged series.