Sri Lanka 131 for 3 (Mathews 57*) trail India 536 for 7 dec (Kohli 243, Vijay 155, Rohit 65, Sandakan 4-167) by 405 runs
Delhi: The home side's attack then turned the screw even further on the visitors when they reduced Sri Lanka to 131-3 on the second day.
Angelo Mathews capitalised on an early reprieve to score 57 not out and skipper Dinesh Chandimal was on 25 with Sri Lanka still 405 behind on a hazy day in the Indian capital.
Behind in the match and struggling in the conditions, several Sri Lankan players returned from the lunch break sporting facemasks as the seasonal haze affecting the region thickened over the Feroz Shah Kotla Stadium.
The smog eventually held up play twice and 22 minutes was lost in total as Lahiru Gamage and his pace colleague Suranga Lakmal both left the field during the second session as they found it difficult to breathe.
Umpires Nigel Llong and Joel Wilson were discussing the air quality with the tourists when Kohli signalled his team in.
Until then, the stadium's near-capacity crowd was treated to some elegant shot-making by Kohli, who hit 25 crisp boundaries in his master class spread over seven-and-half hours.
The 29-year-old became the first international captain to score six double centuries, all of them coming in the last 17 months.
Kohli's partner in a 135-run fifth-wicket stand, Rohit Sharma, smacked left-arm wrist-spinner Lakshan Sandakan (4-167) over long-off for a six but all eyes were on Kohli as he approached the 200-mark.
The skipper took two runs off Lakmal to bring up his double century, celebrating it by leaping into the air before removing his helmet to acknowledge the applause.
Rohit hit Perera over the spinner's head for a six to bring up his fifth consecutive test fifty.
Just when it looked like Sri Lanka would endure yet another wicketless session, Rohit edged Sandakan to be caught behind for 65.
When India came out to bowl, Mohammad Shami dismissed Dimuth Karunaratne for a duck with the first ball of the innings and Ishant Sharma trapped Dhananjaya de Silva lbw for one to immediately dent the tourists' reply.
Dilruwan Perera, spilled in the slip when on 16, made 42 before Ravindra Jadeja dismissed him leg-before.