Vijay (76 not out) and Pujara (55 not out) enabled India to reach 163 for one at tea after winning the toss.
Morne Morkel claimed South Africa`s only wicket when he had Shikhar Dhawan caught at third slip off the first ball after the mid-morning drinks break. Dhawan made 29 in an opening stand of 41 with Vijay.
Morkel suffered a sprained right ankle while fielding on the third day of the drawn first Test in Johannesburg last Friday.
It was initially expected he would be put of action for between seven and ten days but he passed a fitness test on Thursday morning after intensive treatment.
It was a good toss for India to win, with captain Mahendra Singh Dhoni noting that the pitch looked dry and good for batting.
It also gave India`s fast bowlers a chance to recover further from their exertions in Johannesburg, where India bowled 136 overs in the last innings without being able to clinch victory.
Dhawan and Vijay both looked confident at the start of the innings and the left-handed Dhawan struck four boundaries before edging a drive to Alviro Petersen at third slip.
Vijay batted patiently to notch a half-century off 102 balls, a statistic made notable by the fact that his fifty included 11 boundaries. By tea he had faced 167 balls and added another three fours.
Pujara followed up his 153 in the second innings in Johannesburg with another impressive innings, reinforcing his reputation as the successor to Rahul Dravid in playing the anchor batting role for his team. He reached his fifty shortly before tea off 97 balls with seven fours.
The match started in bright sunshine but by tea the ground had clouded over and the floodlights were on.
India made one change, with left-arm spinner Ravindra Jadeja replacing off-spinner Ravichandran Ashwin.
South Africa also made a change of spin bowlers, with left-armer Robin Peterson coming in for leg-spinner Imran Tahir.
Jacques Kallis led the team on to the field to a standing ovation from the crowd after announcing on Wednesday that he will be retiring from Test cricket after the current Test.
Kallis is playing in his 166th Test match in a career which started in 1995/96.