Pujara scored his sixth Test century (135*) while Kohli (77*) closed in on his second hundred of the match as India dominated day 3 against SA.
India displayed the most clinical play they possibly could have on a foreign soil as they firmed their grip on the first Test against South Africa, ending day three at 284 for 2, a huge lead of 320 on a deteriorating Wanderers wicket on Friday.
Having missed out in the first innings, Cheteshwar Pujara made amends in the second, scoring his sixth Test century - the first away from home. When the stumps were drawn, he was unbeaten on 135 with Virat Kohli (77*), who looked destined to score his second hundred of the match, having scored 119 in the first innings.
Pujara and Kohli, in their unbroken stand of 191 for the third wicket, were so dominant in their strokeplay that they gathered 175 runs in the final session of play, firming India's position on the Test. South Africa missed Morne Morkel dearly, who twisted his ankle in the first session and declared out for the remainder of the match, and most possibly for the next Test as well.
Earlier in the day, Zaheer Khan (4 for 88) and Ishant Sharma (4 for 79) made the short work of the South African tail, dismissing the last four wickets for just 31 runs. Vernon Philander (59), who was unbeaten on 48 overnight, brought up his fifty off the first ball this morning, crunching Ishant for four off the back foot through covers.
Zaheer was on the mark from the beginning, troubling Philander and Faf du Plessis (20) before getting the former nicked one to R Ashwin at first slip. Dale Steyn (10) got the taste of his own medicine when Zaheer peppered him with short deliveries. Steyn, too, was up to the challenge, striking two fours off Zaheer. But Ishant got one to jump from one of the cracks on the pitch that took Steyn's top end of the bat and went to Rohit Sharma at third slip. Zaheer got Du Plessis nicking one to Dhoni and finished the innings by bowling Morkel (7).
Philander swung the ball both ways from the outset, troubling both the Indian openers. He lured Shikhar Dhawan (15) to play a length delivery that moved away a fraction, getting him edged to Jacques Kallis at second slip. That also brought up Philander's 100th wicket in Test cricket, who achieved the feat in 19 Tests - the fastest South African to achieve the mark. Murali Vijay (39) did his best to leave as many balls as he possibly could and Pujara too looked sure of his off stump.
But South Africa got the big jolt when Morkel twisted his ankle while fielding at fine leg and hobbled off the ground. The incident looked nasty from the moment it happened and didn't allow the tall pacer to come back on the field for the rest of the day. India went into lunch at 29 for 1.
Kallis began for the hosts after the break and had a close shout for leg before against Vijay. After a lot of playing and missing, Vijay broke the shackles, punching and flicking Steyn for fours in the same over.
Barring some freak running between the wickets, both Pujara and Vijay looked extremely accomplished facing the South African pacers, who had to do the bulk of the bowling after Morkel's injury. Graeme smith's problems were compounded as Imran Tahir was once again off target. His first over went for nine runs as he bowled either too full or too short.
The only wicket India lost in the second session was of Vijay, who got a little tickle to a leg-sided delivery from Kallis as AB de Villiers tumbled to his left to take a sharp catch.
Pujara was unlucky to get run out in the first innings but the luck smiled at him in the second essay when he was dropped after getting his fifty by Tahir who couldn't hold on to a return catch. The Indian No. 3 cut fiercely to anything in his range and raced towards his sixth Test century. He brought up the landmark by a driving Steyn through covers for a boundary.
With both the batsmen set and South Africa one bowler short, India upped the ante in the final session, scoring 175 runs in 38 overs.