The visitors trail by another 255 runs.
At the break, Kohli was batting on 39 not out (51 balls, 6 fours) while Vijay was unbeaten on 31 runs (95 balls, 4 fours).
Post lunch, Vijay and KL Rahul (10) started watchfully against South Africas pacers. They added 28 runs for the opening stand.
Rahul had looked rusty, particularly against Morne Morkels (1-24) bounce, and only ended up returning a catch, which the bowler grabbed in a diving effort to the left.
Immediately on the next ball, Cheteshwar Pujara was run- out for his careers first golden duck as he set off on a suicidal run and failed to beat Lungi Ngidis throw from mid- on.
Vijay too had a couple nervy moments against Vernon Philander (0-17) but managed to survive the spell. He then settled down to aid Kohli in Indias recovery.
India crossed 50 in the 16th over as Kohli looked in good touch from the very start. He set off with a flurry of boundaries and quickly outscored Vijay. The duo put on 50 runs off 101 balls.
Ngidi (0-6) bowled a fiery first four-over spell on Test debut, egged on by the home crowd, but he couldnt etch out a breakthrough before tea.
This was after South Africa were bowled out for 335 runs (113.5 overs) in their first innings just before lunch. R Ashwin finished with 4-113 and Ishant Sharma took 3-46 as the Proteas lost their last seven wickets for 89 runs.
Starting from overnight 269/6, Faf du Plessis (63) and Keshav Maharaj (18) took their 7th wicket stand to 31 runs. India wasted their last DRS review early in the day as Jasprit Bumrah (0-60) looked for an early LBW call against Maharaj.
Mohammed Shami (1-58) bowled a lively spell and got the breakthrough with Maharaj caught behind in the 99th over.
India made a double howler in the 104th over. First, Kagiso Rabada (on 1) was dropped at slip off Ashwin by Virat Kohli. On the very next ball, Rabada (on 3) was again dropped by Hardik Pandya at point as Mohammed Shami obstructed him whilst running in from short third-man.
India finally got the delayed breakthrough in the 111th over as Pandya held a smart catch off Ishant in the deep. Two overs later, Ishant also bowled du Plessis to change the course of the morning session again.
Ashwin then wrapped up the South African innings as Morne Morkel (6) holed out to long off.
(This story has not been edited by Business Standard staff and is auto-generated from a syndicated feed.)