Sri Lanka, who bowled South Africa out for 361 off the penultimate over of the first day, went to lunch on the second day at the Sara Oval struggling at 98-5 here on Saturday.
South Africa are seeking a series-levelling win after being thrashed by an innings and 153 runs in the first Test at the Sinhalese sports club.
The Sri Lankan reply contrasted sharply with their display in the first Test where captain Mahela Jayawardene hit the fourth highest score of 374 after sharing a world record stand of 624 with Kumar Sangakkara (287).
Ntini struck in his second over when Upul Tharanga mistimed an attempted hook shot and the ball ballooned to Nicky Boje at mid-on.
Sangakkara, who batted close to 11 hours in the first Test, lasted only 31 deliveries to score 14 when he flicked Ntini to short mid-wicket where Hashim Amla took an overhead catch.
Jayawardene repeatedly slashed outside the off stump in his brief knock of 13 when another dangerous swish against Dale Steyn found the edge to wicket-keeper Mark Boucher.
Ntini returned for his second spell just before lunch to remove Tillekeratne Dilshan and opener Sanath Jayasuriya in the space of three deliveries.
Dilshan was bowled off the inside edge for four and Jayasuriya, who made 47, edged an outswinger to Herschelle Gibbs at second slip.
At lunch, Chamara Kapugedera was unbeaten on 12 which included a hooked six off Ntini. Wicket-keeper Prasanna Jayawardene was on one.