New Zealand bounced back from their defeat against Sri Lanka two days earlier by restricting South Africa to 193 for seven and then reaching the target with ten balls to spare.
Captain Stephen Fleming and Scott Styris both made half-centuries.
The result left South Africa needing to beat England in their final Super Eights match in Barbados Tuesday to qualify for the semi-finals. It also meant that Sri Lanka also qualified for the last four.
New Zealand took full advantage of winning the toss and sending South Africa in to bat on an overcast day in conditions which helped their seam bowlers.
South Africa made a bad start, losing their first two wickets for three runs, and never recovered despite a restrained innings of 60 by Herschelle Gibbs, who shared stands of 49 with Jacques Kallis (22) and 76 with Ashwell Prince (37).
The tone was set by New Zealand opening bowlers James Franklin and Shane Bond, who both took an early wicket and were mainly responsible for South Africa scoring only 13 runs in the first 12 overs.
Bond finished with two for 26 in ten overs, while left-armer Franklin took one for 16 in seven.
Medium-pacer Craig McMillan was the most successful bowler, however, taking three for 23.
McMillan took the key wicket of Gibbs, who was bowled by a ball which deflected off an inside edge and his right thigh and followed up by dismissing Prince and Mark Boucher, both caught in the deep as they tried to lift the scoring rate.
New Zealand lost by six wickets in a one-sided contest against Sri Lanka when they were in early trouble after deciding to bat first.
For South Africa, the innings was a contrast to their free-scoring display when they hammered 356 for four against the West Indies at the same ground Tuesday.
After pounding 14 sixes and 24 fours against the West Indies, South Africa were restricted to 11 boundary hits Saturday three sixes and eight fours as they struggled to make clean contact against disciplined bowling on a slow pitch.
New Zealand slipped to 42 for two before Fleming (50) and Styris (56) put on 78 for the third wicket.
South Africa put down three catches during the stand.
Styris, New Zealand's leading run-scorer at the World Cup, was put down on four when he was dropped by Prince at midwicket off Andre Nel.
Fleming was dropped twice, on 24 by wicketkeeper Boucher off Nel and on 36 by Gibbs at backward point off Kallis.
Fleming finally fell to a good catch by Boucher, standing up to Shaun Pollock, after facing 84 balls and hitting six fours.
McMillan joined Styris and batted aggressively to remove any anxiety from the New Zealand dressing room before Styris fell to left-arm spinner Robin Peterson with 18 still needed.
Styris faced 84 balls and hit four fours.