|New Zealand 228 (47.5 overs): Devine 93, Ismail 3-27, Khaka 3-31|
|South Africa 229-8 (49.3 overs): Wolvaardt 67, Luus 51, Kapp 34*|
|South Africa won by two wickets|
Marizanne Kapp was again the hero as South Africa came through to beat New Zealand by two wickets in yet another tight finish at the Women's World Cup.
The Proteas were easing to the target, only to lose three wickets for nine runs and find themselves 170-5.
With 27 needed from four overs, Kapp made it six from one and ended on 34 as the game was won with three balls left.
In beating New Zealand for the first time at a World Cup, South Africa move to four wins from four games.
They join Australia on eight points and probably only need one more win for a place in semi-finals.
New Zealand face a crucial meeting with England in Auckland on Sunday.
The winners of that match at Eden Park (22:00 GMT on Saturday) will be set for a spot in the semi-finals, while the losers will be on the verge of elimination.
Kapp the hero in another Proteas thriller
South Africa are making a habit of winning thrilling games - they have already beaten Pakistan and England in last-over finishes.
This one should never have been close. The pace trio of Shabnim Ismail, Ayabonga Khaka and Kapp, who is the tournament's leading wicket-taker, were excellent to take New Zealand's last six wickets for 30 runs. The White Ferns were bowled out for a modest total despite 93 from captain Sophie Devine.
In the chase, the Proteas were cruising when Laura Wolvaardt, who made 67, and Sune Luus, with 51, added 88 for the third wicket.
However, leg-spinner Amelia Kerr trapped Wolvaardt lbw and had Mignon du Preez caught behind before seamer Hannah Rowe found an edge off Luus.
A required run-rate that was once well below five spiralled towards seven, but Kapp kept the Proteas afloat despite further wickets falling around her.
She cracked back-to-back fours in the 47th over and, when 11 runs were needed from eight balls, hit Devine for four then crucially pinched a single to keep the strike for the final over.
The first ball of the 50th, delivered by off-spinner Frankie MacKay was hoisted for four over the leg side.
With the game as good as over, Kapp took one, trusting number 10 Khaka to hit the winning run.