Parnell had figures of 5 for 57 as New Zealand were shot out for a modest 214 after being inserted by South Africa captain Graeme Smith in the Group B match at SuperSport Park.
The home team then knocked down the required runs with 8.5 overs to spare.
AB de Villiers top-scored with an unbeaten 70 as the Proteas got back in contention for a semi-final berth after the 55-run loss to Sri Lanka two days back at the same venue.
De Villiers played a solid 76-ball knock, which included nine fours, for his 19th one-day fifty. He was hardly troubled by the Kiwi bowlers and deservedly hit the winning runs -- a four -- as the home team ended up with 217 for 5 in 41.1 overs.
New Zealand's bowlers, with the exception of Daniel Vettori (1/34), struggled on an early season pitch that did not assist pace bowlers later in the match.
Shane Bond, who returned to international cricket recently, Daryl Tuffey and Kyle Mills claimed a wicket apiece.
South Africa made a sedate start but soon lost captain Graeme Smith for seven, at the team score of 22, in the sixth over.
Smith, who scored a half century in a lost cause against Sri Lanka, fell to Tuffey.
One-down Jaques Kallis batted with authority and shared a 52-run stand for the second wicket with the other opener, Hashim Amla, to ensure that the Proteas did not lose wickets in the initial overs.
Kallis, who made some elegant strokes for fours off Bond and Tuffey, fell for 39 while Amla, who held the other end together for almost half the South African innings, was out for a 65-ball 38. He was Kiwi skipper Vettori's only victim.
Duminy, who came in for Amla, did not last long, out for 11 to a great catch by McCullum, who held on to a bottom edge off Mills's delivery in the 27th over.
Duminy, who scored a duck in the last match, could score just 11 off 13 balls, including two fours.
De Villers, who walked in at the fall of Kallis in the 17th over, and Mark Boucher (28) shared 42 runs for the fifth wicket to take South Africa closer to the target before the latter was out in the 36th over.
Albie Morkel scored 19 quick runs and was unbeaten with de Villiers when the winning runs came.
Earlier, man-of-the-match Parnell wreaked havoc in the Kiwi ranks. He accounted for all the top Kiwi batsmen, including top scorer Ross Taylor, who hit a patient 72 off 106 balls.
Parnell proved his skipper's decision to invite the Blackcaps to bat correct when he first removed Jesse Ryder (8) and then got rid of Martin Guptill (21).
The other South African bowlers were also impressive as they bowled a tight line and length to stifle the Kiwi innings.
Dale Steyn (2/32) and Roelof van der Merwe (2/35) took two wickets apiece as New Zealand were bundled out in 47.5 overs.
Taylor hit a defiant 72, inclusive of six boundaries and two sixes, and also shared a crucial 71-run partnership with Grant Elliot (39) to help his side go past the 200-run mark.
New Zealand's batsmen got the starts but could not convert them into big knocks.
Taylor's sensible batting was the cornerstone of the Kiwi innings as he batted with resolve to prevent his team's collapse.
After the early fall Ryder, Brendon McCullum (44) and Guptill batted with resolve. McCullum hit three boundaries and two sixes in his 68-ball innings while Guptill hit four fours in his 26-ball stay.
Parnell claimed Guptill as his second victim when he had him caught by Hashim Amla. Johan Botha then accounted for McCullum.
Taylor and Elliot joined hands but could not score freely as the home team bowlers kept a tight line.
The partnership was broken when Roelof van der Merwe bowled Elliot, who hit four boundaries in his 48-ball stay at the crease.
Taylor opened up late in the innings and scored some quick runs but did not find any able ally at the other end.
Live Scorecard NZ vs SA: SA cruising
Scorecard: SA score easy win over NZ
Botha, Abdulla in South Africa's T20 squad
Tendulkar is my cricketing hero: Taylor
India field unchanged team against SA