Faff du Plessis (88) and AB de Villiers (72) put on a 134-run unbeaten stand for the fifth wicket, after Zaheer Khan (1/93) had dismissed Jacques Kallis to take his 300th Test wicket.
The Proteas, chasing 458 to win, scored 95 runs in the second session and need another 127 runs to set a world-record total chased in the fourth innings of a Test.
Starting the post-lunch session at 236 for 4, India deployed R Ashwin and Virat Kohli first up to get rid of five overs before the second new ball became due.
Perhaps that set the tone for the post-lunch session as both batsmen got their eye in, enough to counter the new ball when it was taken straightaway in the 80th over.
Also Read
Zaheer was especially expensive, his 14 overs in the two sessions so far costing 64 runs. Ishant Sharma toiled hard, but with the sun out, he didn't get as much bite from the wicket as in the first innings.
Shami was the best bowler on display, but even he failed to get a breakthrough. Du Plessis' fifty came in the 82nd over, wherein he was also hit on his right thumb, but soldiered on nevertheless. De Villiers celebrated his half-century in the 88th over.