South Africa, set 402 to win, were 69 for three at tea on the third day. Jacques Kallis was 24 not out with Ashwell Prince on five.
India scored 249 in their first innings, to which South Africa replied with 84. The visitors were then dismissed for 236 in their second innings today with fast bowler Sreesanth, whose return of five for 40 in the first innings was his maiden five-wicket haul in Tests, taking two for 15.
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 stood firm 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 35 to take South Africa to tea without further loss.