Skipper Virat Kohli and Rohit Sharma combined to pulverise a deflated Sri Lanka attack as India stretched their lead to 302 on day three of the second Test on Sunday.
India were 507 for four at tea, stretching their first innings lead to 302 in Nagpur. Kohli, on 170, and Sharma, on 51, were involved in a 97-run unbeaten stand.
Rohit, who was included in the team as the sixth batsman, joined his captain in playing attacking cricket as he registered his fifty with the help of 5 fours and a six before the break.
Ajinkya Rahane missed the run fest after falling to off-spinner Dilruwan Perera for four - the only wicket to fall in another gruelling session for the visitors.
Kohli's 183-run third-wicket stand with his overnight partner Cheteshwar Pujara piled on the agony for the Sri Lankan bowlers.
While Pujara was bowled by paceman Dasun Shanaka for 143 in the first session, Kohli continued to score quick runs in his team's expected bid to bat just once in the match.
Kohli, who scored his 10th international century in 2017, flicked Perera for a six over long-on to bring up his 150 - the seventh time he went past the landmark.
Top-ranked India are looking to go one-up in the three-Test series after the rain-hit first match ended in a draw in Kolkata.