The Proteas' commanding 357-4 was built on De Kock's 114 and Van der Dussen's 133.
New Zealand, just days from only narrowly falling short of chasing 389 in a five-run defeat by Australia, collapsed to 190 all out with more than 14 overs to spare in Pune.
Proteas paceman Marco Jansen finished with 3-31 with left-arm spinner Keshav Maharaj claiming 4-46.
Glenn Phillips was last man out for 60 in an innings where no other batsman made more than Will Young's 33.
Victory, which ended South Africa's run of five straight first World Cup defeats by New Zealand since 1999, left the Proteas, bidding for a first one-day international World Cup title, virtually assured of a semi-final spot.
But New Zealand's third loss of the tournament was a blow to their hopes of reaching the last four as they slipped to fourth in the table with eight points, two ahead of Pakistan as well as Afghanistan who have a game in hand.
Earlier, 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.
"I'm feeling really good lately. It's nice that everything is coming together at an important time for us," said De Kock, who plans to quit ODI cricket after this tournament, at the innings break.
"I was getting a couple of messages from the bench to bat through. I just want to keep batting, bat for longer. My career is coming down to a finish, I'm trying to bat as much as I can."
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.
Having completed a 62-ball fifty, 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.