Ntini dismissed Misbah-ul Haq (41) before sending Umar Gul and Danish Kaneria back without scoring to leave Pakistan on the brink at 204-9 at lunch.
Abdul Rehman was unbeaten on 24 with the last man Mohammad Asif on three.
The home side, which lost the first Test against the tourists, trail South Africa's first innings score of 357 by 153 runs at the Gaddafi Stadium.
Ntini, who had just one wicket in the first innings, almost took a hat-trick as he broke a defiant 39-run stand for the seventh wicket between Misbah-ul Haq and Rehman with the first ball of his second over.
Haq, who improved on his best Test score of 23, played an irresponsible shot and was caught behind.
Ntini trapped Gul with his second delivery and then came agonisingly close when an edge off Kaneria fell short of the slips fielder. Off his sixth, Ntini had Kaneria caught by Mark Boucher for his 400th victim.
Boucher set a world record for the most dismissals behind the stumps in the first Test in Karachi, beating Australian Ian Healy's record of 395.
South Africa lead the two-Test series after winning the first by 160 runs.
Pakistan, resuming on 140-4, had looked to Inzamam-ul Haq to avoid conceding a big first-innings lead but the former captain, playing in his last Test before retirement, fell for 14.
Inzamam, who needed 20 runs to overtake Javed Miandad's record of 8,832 for the most Test runs scored for Pakistan, survived five balls before edging Jacques Kallis to Boucher.
The 37-year-old batsman now needs just six runs in the next innings to clinch the record.
Captain Shoaib Malik did not last long as he failed to keep down a sharp rising delivery from paceman Dale Steyn and was caught at short-leg by Hashim Amla for just one.