Fast bowler Sreesanth took three for 47 as South Africa, who need 402 to win, reached stumps on the third day on 163 for five in their second innings.
India scored 249 in their first innings, and Sreesanth took five for 40 in South Africa's reply of 84.
The visitors were dismissed for 236 in their second innings on Sunday.
Ashwell Prince stood firm for South Africa with an unbeaten 54.
India resumed their second innings on 146 for five, and South Africa began positively by dismissing Mahendra Dhoni and Anil Kumble in the first five overs of the day's play.
Medium pacer Shaun Pollock had Dhoni caught behind by wicketkeeper Mark Boucher for 18 with a delivery that swung late before finding the edge, and Kumble miscued a drive off fast bowler Andre Nel to Ashwell Prince in the gully to be dismissed for one.
VVS Laxman and Zaheer Khan stopped the slide with a stand of 70 for the eighth wicket that was ended when fast bowler Makhaya Ntini had Laxman well caught low down by Graeme Smith at first slip.
Laxman scored a disciplined 73 off 154 balls with 12 fours.
Two balls later Ntini had Khan caught behind for 37, reducing India to 219 for nine.
Sreesanth, who scored 15 not out, and Vikram Singh, who made two, shared a bright stand of 16 for the last wicket in which Sreesanth smashed Nel for a straight six and celebrated by whirling his bat in the air repeatedly.
Pollock took three for 33, while Ntini and Nel also claimed three wickets each.
South African openers Herschelle Gibbs and Smith came out to face one over before lunch, and with the fourth ball of the over left-arm fast bowler Khan had Gibbs caught by Sachin Tendulkar at first slip.
Smith and Hashim Amla held the fort for seven overs before Smith, who scored 10, drove at a wide delivery from Sreesanth and was caught by Virender Sehwag at point.
Sreesanth struck again four overs later when he had Amla caught behind by wicketkeeper Dhoni for 17.
Kallis and Prince consolidated with a partnership of 50 that took South Africa to the fifth over after tea, when Kallis, who scored 27, steered another of Sreesanth's deliveries to Sourav Ganguly at third slip.
Prince and AB de Villiers seemed to be steering South Africa towards stability in their stand of 36 for the fifth wicket.
But they were separated an hour before stumps when De Villiers drove a delivery from fast bowler Vikram Singh and was run out at the non-striker's end for 17 by Khan's direct hit on the stumps