Chasing an adjusted target of 298 in just 43 overs after a rain interrupted the match at Eden Park, Grant Elliott hit a six right at the death to confirm victory and send the Auckland crowd into raptures.
It is the first time New Zealand has ever reached a World Cup final, and it will play either Australia or India on Sunday. Te pair face each other in Sydney on Thursday.
Not the first time in the sport, rain played a part. South Africa were motoring with the bat before a two-hour delay for poor weather.
Though its total was escalated by the Duckworth/Lewis method -- used to calculate a revised target in the event of a rain delay -- New Zealand held firm thanks to Elliott.
His 84 not out underpinned its innings and it was fitting that he delivered the final blow, smashing Dale Steyn for six off the second last ball to spark jubilant scenes at Eden Park.
"I don't think this win is for myself or the team, but everyone here," Elliott said at the post-match presentation. "The supporters have been amazing.
"I think we timed the pace of the innings to perfection. I wasn't as calm as I looked. When you have 45,000 fans screaming at you every ball...
"It has been an absolute pleasure playing in front of this crowd. We have had a good run. It is the first final we have been in as New Zealand.
"We are a very level team, we will approach it as any other game. Nothing going in my mind when I hit the six. I don't even know where the ball went."
South Africa, who themselves have never reached the final, have been accused of choking in past installments of the one-day competition.
But that indictment cannot be leveled at it after one of the most dramatic matches in World Cup history.
It had recovered from 114-3 in the 27th over to 216-3 after 38 overs thanks to some fierce hitting from captain AB de Villiers and Faf du Plessis, before the rain came.
With the game stopped for two hours, it finally reached 281 off its reduced 43 overs, du Plessis top scoring with 82.
New Zealand's target was upgraded via Duckworth/Lewis, a calculation that takes into account how many overs were left and how many wickets had been lost, to 298.
Kiwi skipper Brendan McCullum got it off to a fast start with a 22-ball half-century but after he was dismissed it wobbled, and needed 139 from 22 overs.
But Elliott was the steadying hand, judging his innings perfectly.
And though he was dropped in the penultimate over, he struck the telling blow off Steyn to seal victory and inflict a fourth semifinal defeat on South Africa.
"It was a great advertisement for cricket," McCullum said at the post-match presentation. "Everybody involved will remember this for the rest of their lives.
"What a great innings from Grant. He came out of wilderness not long ago. The greatest time of our lives. We have enjoyed the experience.
"I hope the crowds are all dreaming the way we are. Gee it would be nice to win it. We don't mind whom 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."
Should Australia beat India at the Sydney Cricket Ground, then the joint hosts of the World Cup will meet in the final in Melbourne.
"It was an amazing game of cricket," AB de Villiers said. "Probably the most electric crowd I have ever heard in my life. I guess the best team has come out on top. We gave it our best. No regrets.
"We left it all out there. It is hurting. It is going to take a while to recover. The bigger picture is for the people back home. We play for them. I hope they can still be proud of us."