South Africa were 22 without loss in their second innings at tea on the third day, a lead of 110 runs.
India were dismissed for 240 in reply to South Africa's first innings of 328.
Sachin Tendulkar and VVS Laxman resumed on 103 for three and took their partnership to 64 before Tendulkar attempted to cut an angled, short delivery from Ntini and was caught behind by wicketkeeper Mark Boucher.
Tendulkar, who was dropped on 21 on Wednesday, hit 11 fours in his 63, India's top score.
Three balls later Sourav Ganguly fended a rising, short delivery from Ntini to Herschelle Gibbs in the gully to be dismissed without scoring.
Debutant Morkel took his first test wicket when Mahendra Dhoni, who scored 34, edged a drive to AB de Villiers at second slip.
The dismissal ended a steadying partnership of 54 that Dhoni shared with Laxman.
Morkel claimed his second victim in his next over when Anil Kumble drove wildly and was caught behind by Boucher for nought.
Zaheer Khan skyed what became the last ball before lunch, bowled by Morkel, to Hashim Amla at short leg to be dismissed for two.
Free-scoring number 10 Shanta Sreesanth helped Laxman add 52 runs in fluent style for the ninth wicket.
Medium pacer Andrew Hall ended the partnership when Sreesanth, whose 28 included five fours, swung across the line and edged a catch to Boucher.
The innings was over an hour after lunch when medium pacer Shaun Pollock had Vikram Singh caught behind for four.
Laxman batted for almost three hours for his unbeaten 50, which he scored off 156 balls with just three fours.
Ntini took three for 41 while Morkel claimed three for 86.
South Africa faced 10 overs in their second innings before tea, which came with De Villiers on 13 and Graeme Smith on seven.
Umpire Mark Benson left the field in the fifth over of the day's play because of heart palpitations, Cricket South Africa media liaison officer Gordon Templeton told reporters. Templeton said Benson was taken to hospital.
Benson was replaced on the field by third umpire Ian Howell.