South Africa won by 128 runs after six overs of the final day's play.
New Zealand, who had been chasing 249 to win, were dismissed for 120 in their second innings.
Fast bowler Ntini, who took five for 94 in the first innings, claimed five for 51 in the second innings to finish with match figures of 10 for 145.
Ntini took 10 for 178 in the third Test against Australia [ Images ] in Johannesburg earlier this month.
Marshall had stood firm for 165 minutes for his 25 off 85 balls.
Steyn completed his maiden five-wicket haul three balls after that when he sent Chris Martin's middle stump cartwheeling to bowl him for a duck. Steyn took five for 47.
The second Test starts in Cape Town on April 27.