South Africa were 283 for six at tea here on Thursday, still 131 behind India's first innings total of 414.
Sachin Tendulkar made a key breakthrough when he had Jacques Kallis caught on the midwicket boundary in the 93rd over - 13 overs after India could have opted for a new ball.
Anil Kumble bowled Ashwell Prince in the next over and part-time off-spinner Virender Sehwag struck a third blow to South Africa's hopes when Herschelle Gibbs was given out caught at short leg four balls before the interval.
Kallis (54) and Prince (26) had put on 83 for the fourth wicket and were slowly regaining the ascendancy for the host nation when India struck.
It was India's second double strike of the day. South African captain Graeme Smith was out for 94 in the morning and was soon followed by Hashim Amla, who made 63. The pair put on 159 for the second wicket.
India had already managed to slow down South Africa's scoring after dismissing the aggressive Smith, who made his runs off 141 balls, but it seemed surprising they did not call for a new ball as Kallis and Prince dug in.
But continuing with the old ball, with slow bowlers in action, made scoring difficult and Kallis was out in uncharacteristic fashion when he lost patience against Tendulkar, who was bowling leg breaks.
Kallis had made a careful 54 off 128 balls. Prince was even more watchful, making 26 off 112 deliveries before he tried to playing a forcing shot off the back foot against veteran leg-spinner Kumble and edged the ball into his stumps.
Gibbs was unlucky to be given out by umpire Daryl Harper as it seemed the ball had missed his bat and gone to short leg fielder Wasim Jaffer off his thigh pad.
South Africa, seeking a win to break a series deadlock, started the day confidently after resuming on 144 for one with Smith and Amla pushing the score along steadily before Kumble had Smith caught by a diving Sehwag at short midwicket.
Smith went into the nineties with successive on-drives for four off Zaheer Khan and seemed set to score his first Test century since April 2005.
But with Kumble bowling from around the wicket into rough outside the left-hander's off stump, Smith tried to whip a ball through midwicket and did not get fully to the pitch of the delivery, hitting a low catch to Sehwag.
Shanthakumaran Sreesanth came on to bowl of his first spell of the day and immediately found an immaculate line and length.
Amla tried to square cut a delivery wide of his off stump but edged a catch to wicketkeeper Dinesh Karthik. He made 63 in 212 minutes off 174 balls with seven fours.
It was Sreesanth's 18th wicket in three matches, equalling the record for an Indian bowler in a series against South Africa. The record was set by Kumble in 1992/93 and equalled by Javagal Srinath in 1996/97.