Ntini and fellow new ball bowler Dale Steyn captured five wickets each as New Zealand were bowled out for 120.
It took South Africa just six overs to capture the remaining three wickets after New Zealand resumed on 98 for seven.
New Zealand left-hander Daniel Vettori went on the attack, racing to 38 but opening batsman Hamish Marshall, who batted through the team's collapse on the fourth day, added only one run to his overnight 24.
Marshall was dropped at first slip by Boeta Dippenaar off Steyn on 25 but without adding to his score he was out to Ntini, when he edged a lifting ball to wicketkeeper Mark Boucher.
Four balls later Vettori flashed at Steyn and was caught by Boucher. Steyn then produced a fast, straight ball to bowl last man Chris Martin.
Ntini took five for 51 and Steyn five for 47. Ntini finished with match figures of ten for 146. It was his fourth ten-wicket haul and he became the first South African to do the feat in successive matches after taking ten for 178 in a losing cause against Australia earlier this month.
It was South Africa's first win in eight Test matches and their first of the season after losing five out of six Tests away and at home against Australia.
New Zealand fast bowler Michael Mason will join the touring party as cover for the injured Shane Bond before the second Test which starts in Cape Town on April 27.