Bad light forced play to be called off early, with India sitting pretty on 181 for 1 in 61 overs after electing to bat first.
Vijay looks on course for a well-deserved century. He was unbeaten on a fluent 91, inclusive of 17 boundaries, off 201 balls, while Cheteshwar Pujara showed great application to score 58. The duo were involved in an unbroken partnership of 140 runs.
Only eight overs were bowled in the post-tea session, during which India scored 18 runs, before the umpires called the players off the field.
Resuming India's innings at 76 for 1 in the post-lunch session, Vijay and Pujara swelled their 35-run partnership for the second wicket.
Despite the sun hiding behind clouds after the break, there was nothing more than a hint of movement on the bouncy pitch for the South African pace battery.
The two batsmen made good use of the conditions, playing watchfully while scoring at a decent pace.
India crossed the 100-run mark in the 30th over. The last 10 overs bowled by the Proteas in the post-lunch session cost them 48 runs without a wicket.
It was the highlight of the day as run-scoring became easier once the batsmen got themselves in, something Vijay did with aplomb in the first session as Pujara just carried on his form from the first Test, where he scored 153 in the second innings.
Vijay brought up a well-deserved half-century in the 34th over after grinding his way at Johannesburg without scoring too many runs. It was his fourth fifty in 20 Tests, coming off 102 balls, with 11 fours. Notably, he scored at a much better clip than the previous match, outlining the nature of the pitch.
Jacques Kallis (0-23) and Morne Morkel (1-26) bent their backs in the middle phase of the session, trying to get some purchase out of the wicket. But they only had disappointment in store as India raked up 60 runs in the 13 overs bowled in the first hour after lunch.
Vernon Philander (0-39) came back into the attack in the 43rd over, and Vijay greeted him with a sumptuous cover drive that brought up the 100-run partnership for the second wicket.
Pujara, meanwhile, quietly accumulated his runs, as India's 150-run mark came up three overs later.
Just before tea, in the 52nd over, Pujara brought up the fourth fifty of career in just 17 Tests. He used up 97 balls for it, hitting seven fours.
Dale Steyn (0-49) returned to bowl a nagging spell just before the break, beating Vijay's outside edge on more than one occasion, as the ball started doing a bit under overcast conditions. But the batsmen survived and went into the break with their partnership intact.
Robin Peterson (0-43) was the only other bowler used in the session, toiling without any reward.
Earlier, in the morning session, Kallis, playing in his last Test, led the hosts on to the field. He was given a 10-second head-start by his team-mates as the crowd cheered the all-rounder who acknowledged them with raised hands and doffing his hat.
Shikhar Dhawan and Vijay took guard against Steyn and Philander respectively, with the former getting off the mark on the second delivery, punching the ball down the ground for four after India captain Mahendra Singh Dhoni won the toss and elected to bat.
In the first 10 overs, India went along at four runs an over even as South Africa introduced Morkel into the attack as early as the eighth.
Forty-one runs came in 13 overs came in the first hour as both batsmen looked comfortable.
But the drinks break worked against Dhawan, who was out first ball afterwards, playing a loose shot off Morkel, caught at third slip by Alviro Petersen.
Dhawan scored 29 runs, off 49 balls, which included four fours.
But Vijay and new batsman Pujara then negotiated the remainder of the session ably without any overtly troublesome moments, picking runs almost at will.
India made one change in their playing eleven, surprisingly dropping off-spinner R Ashwin for Ravindra Jadeja.
South Africa too made one change to the side from Johannesburg, with left-arm spinner Robin Peterson coming in for leggie Imran Tahir.
Image: Murali Vijay
Photograph: Rogan Ward/Reuters
Don't write Indian bowlers off: Domingo
'Jacques' calmness, maturity and presence will sorely be missed'
Fanie de Villiers in trouble after objectionable remarks on TV
India had more positives from drawn first Test, says Pujara
Stats: Pujara first Indian to post three hundreds in 2013