New Zealand's Grant Elliott struck the premier South Africa strike bowler Dale Steyn for six to give the World Cup co-hosts a tight four-wicket victory with a ball to spare in their semi-final at Eden Park.
|New Zealand v South Africa scoring comparison
Twelve runs were required off the final over of the rain-affected match after New Zealand had been set a daunting 298 to score off 43 overs.
Veteran Daniel Vettori squeezed a four past third man, the pair ran a bye and Elliott hit the winning six over long-on to secure New Zealand's first semi-final victory in seven attempts.
They will now meet the winners of Thursday's second semi-final between Australia and India in Sunday's final at the MCG.
Elliott was named the man-of-the-match after his masterly 84 not out from 73 deliveries.
Captain Brendon McCullum had set the tone with a brutal 59 from 26 balls, including four sixes.
South Africa's launchpad
Earlier, AB de Villiers (65 not out) and Faf du Plessis (82) laid the foundations of South Africa's impressive 281 for five off 43 overs with a fourth wicket partnership of 103 from 73 balls.
David Miller blasted 49 off 18 balls and New Zealand did not help their cause by dropping three catches, none of them easy but all the sort of chances they had been taking in their unbeaten run through the tournament.
South African openers Hashim Amla (10) and Quinton de Kock (14) fell cheaply to Trent Boult who broke Geoff Allott's New Zealand record of 20 wickets set at the 1999 World Cup.
"Pretty amazing," said McCullum said at the presentation ceremony.
"It was a great advertisement for cricket, everybody will remember this for the rest of their lives. It's the greatest time of our lives. We have enjoyed the experience, the crowds that have turned up, the brand of cricket we have tried to play. We hope the crowds are all dreaming the way we are.
"We don't mind who we face in the final, they are both quality sides but we know if we play the way we want to we are a good chance. I'm really proud to represent New Zealand."
South Africa 281-5 in 43 overs (du Plessis 82, Anderson 3-72)
New Zealand 299-6 in 42.5 overs (Elliot 84*, Morkel 3-59)
Source: Al Jazeera and agencies