South Africa's reputation as cricket's perennial chokers returned to haunt them as New Zealand pulled off a dramatic 49-run win on Friday to qualify for the World Cup semi-finals.
The Black Caps, restricted to 221-8 after taking first strike, bundled out South Africa for 172 in an exciting finish in front of 23,000 fans at the Shere Bangla Stadium.
Jacob Oram was New Zealand's Man of the Match with four wickets and two catches while off-spinner Nathan McCullum sealed the Proteas' fate with three for 24 from 10 overs.
Skipper Graeme Smith (28) and Jacques Kallis (47) put on 61 as South Africa moved to 108-2 by the 24th over, before the last eight wickets crashed for 64 runs.
It will be New Zealand's sixth appearance in the semi-finals, where they await the winners of Saturday's match between Sri Lanka and England in Colombo.
South Africa, often regarded as the best team never to have the World Cup, have now lost in three semi-finals, two quarter-finals and once in the first round.
"There are no words to describe how I feel," said Smith. "We just have to take it on the chin. It was a very disappointing evening. I thought we bowled pretty well and at 100 for 2, we were sitting well and then we lost too many wickets."
New Zealand captain Daniel Vettori praised his team's spirit.
"Every single bowler stepped up today and probably it was the fielding that got us through," said Vettori. "Once we got 220, we knew we had to be aggressive. We knew it was a tricky wicket and knew it was going to be an old-school one-day game."
Defending a modest total, New Zealand earned a lucky break in the first over of the innings when Hashim Amla tried to cut a ball from Nathan McCullum. The edged ball bounced off wicket-keeper Brendon McCullum's boot to Daniel Vettori in the slips and umpire Aleem Dar declared the batsman out after consulting the TV umpire.
Smith and Kallis rallied the Proteas before the skipper cut Oram to point where substitute fielder Jamie How picked up a low catch in the 15th over.
Kallis moved steadily towards his half-century when, in an uncharacteristic rush of blood, he pulled seamer Tim Southee high to deep mid-wicket where Oram took a running catch.
New Zealand then claimed two wickets in one over to reduce the rattled South Africans to 121-5 in 28 overs. JP Duminy was bowled by Nathan McCullum for three and AB de Villiers, who made 35, ran himself out after a mix-up with Faf du Plessis.
The spot-on Oram tightended the screws further when he bowled Johan Botha and had Robin Peterson caught behind in successive overs. Du Plessis hit 36 at the end but South Africa's slim hopes ended when he holed out in the covers off Oram.
New Zealand's innings had revolved around burly left-hander Jesse Ryder, who finally struck World Cup form with a fluent 83. Ryder, whose best score in six previous innings in the tournament was 38 against Canada, hit eight boundaries.
Ryder put on 114 for the third wicket with Ross Taylor (43) after New Zealand were reduced to 16-2 by the sixth over. New Zealand were sitting pretty at 130 for two in the 33rd over when the Proteas bounced back with three wickets for 26 runs in six overs.
Kane Williamson hit an unbeaten 38 in the slog overs to ensure South Africa's target exceeded 200 runs under lights.
South Africa's ploy to throw the new ball to a spinner worked again as left-armer Robin Peterson dismissed Brendon McCullum in his second over with a superb diving return catch.
It was Peterson's 15th wicket in the tournament, behind only Pakistan captain Shahid Afridi (21) and Indian seamer Zaheer Khan (17).