Left-handed opener De Kock reached his 21st one-day international ton off 103 balls with eight fours and three sixes.
He brought up his century with a huge six off Jimmy Neesham.
De Kock also made 100 against Sri Lanka, 109 in the game with Australia and 174 in the victory over Bangladesh.
He started the day needing just 69 more runs to pass 500 for the tournament when the Proteas were sent in to bat in Pune.
Having completed a 62-ball fifty, including three fours and two sixes, De Kock broke through the 500-run barrier with a legside boundary off recalled paceman Tim Southee.
He was eventually out for 114 caught by Glenn Phillips off Southee, ending a 200-run partnership for the second wicket.
Van der Dussen kept up the assault as he made 133 off 118 balls with nine fours and five sixes.
It was his second hundred of the tournament after his 108 against Sri Lanka and sixth of his ODI career.
Southee again made the breakthrough, clean bowling Van der Dussen in the 48th over as he tried to launch the ball across the line.
David Miller added a blistering 53 off just 30 balls with four sixes as South Africa ended their innings with Aiden Markram arriving at the wicket for the last ball which he dispatched for six.
New Zealand used seven bowlers after seamer Matt Henry suffered a hamstring injury and was forced off the field midway through his sixth over.
South Africa went into the game on 10 points from six games and on the brink of making the semi-finals while New Zealand were on eight points.
South Africa 357-4: Rassie van der Dussen 133, Quinton de Kock 114, David Miller 53