Ntini's five-wicket haul was his 15th in test cricket.
The match at the Kingsmead Stadium was dogged by bad light and the final overs were played in gathering gloom.
"It got a bit fiery out there,"
Graeme Smith, South Africa captain
India resumed after tea at 160-8 and the tailenders tried to delay play as long as possible in the hope of being taken from the field by the umpires.
However, Andre Nel got Zaheer Kahn to fend at a rising delivery while on 21 and give Andrew Hall a simple slip catch. Hall then returned to the attack and had Sree Sreesanth caught behind.
The umpires had to calm fraying tempers in the final overs as India apparently employed delaying tactics.
Khan indicated that he could not see the ball and took a long time to ready himself for the next delivery, and when Sreesanth was hit on the elbow, South Africa's players were visibly angered by the time his treatment took.
"It got a bit fiery out there," South Africa captain Graeme Smith said.
The start of play on Saturday was delayed by 55 minutes by bad light before India resumed on 38-2. Sachin Tendulkar was out leg-before-wicket for a duck by Ntini on the fifth ball, which cut back from outside the off stump.
In his next over, Ntini got Wasim Jaffer out for 28, pulling a short-pitched delivery outside the off stump, ballooning a catch to Nel at mid-off to leave India on 45-4.