India were 1-181 when play was brought to a premature end eight overs after tea.
Vijay (91 not out) and Pujara (58 not out) put on 140 for the second wicket as South Africa's bowlers toiled on an unresponsive pitch after Indian captain Mahendra Singh Dhoni won the toss.
It was an inauspicious opening day for world champions South Africa after captain Graeme Smith said they were determined to put in a good performance to mark star all-rounder Jacques Kallis' last Test.
Kallis, 38, announced on Wednesday that he would retire from Test cricket after the match, although he will continue to play one-dayers in an effort to be selected for the 2015 Cricket World Cup in Australia and New Zealand.
Kallis led the South African team on to the field at the start of play to the applause of his team-mates, spectators and umpires Steve Davis and Rod Tucker.
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 a good toss for India to win, with 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.
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 the close he had faced 201 balls and added another six 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. He faced another 20 deliveries before the close without adding to his tally of boundaries.
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.