Virat Kohli century swells India's total before West Indies respond
Kohli made a classy 121 off 206 balls, a knock which had 11 fours, while Ravindra Jadeja and spin partner Ravichandran Ashwin ensured that the tourists put up a commanding score after starting the day at 288-4.
The West Indies, who lost the opening test of the two-match series, started slowly in testing conditions but reached 86-1 at the close of play with skipper Kraigg Brathwaite unbeaten on 37 and debutant Kirk McKenzie (14 not out) at the crease.
Opener Tagenarine Chanderpaul looked good at the wicket in his 95-ball knock of 33 but was caught by Ashwin off the bowling of Jadeja shortly before stumps.
The hosts are still not out of the woods on a wicket that is slowing down with each session and trail India by 352 runs with nine wickets in hand ahead of the third day.
Earlier, Kohli looked in fine fettle after reaching his 76th century overall in his 500th match for India across all formats before being run out by Alzarri Joseph.
It was the former captain's first hundred outside India since his 123 against Australia in Perth in 2018. His 29th ton in the longest format also meant that he equalled Australian great Don Bradman.
His fall ended his 159-run fifth-wicket stand with Jadeja, who was dismissed by Kemar Roach (3-104) shortly after with the score at 360.
But Ashwin added valuable runs during his 78-ball effort to swell the team's score and heap pressure on the hosts.
Jomel Warrican (3-89) also picked up three wickets for the West Indies, including the last two Indian players.