Kohli (143 batting) led from the front to lay a solid platform for his team with the other major contribution coming from opener Shikhar Dhawan (84).
The Indian captain, who also crossed the 3000-run mark in his 42nd Test, had the support of Ravichandran Ashwin (22 batting) at close of play as the two shared an unbeaten 66-run stand.
The away side had a rather quiet first session where it managed 72 for one in 27 overs before Kohli arrived at the crease and stepped up the tempo. By stumps, India had a decent run rate of 3.35 runs per over.
Starting at 65 after tea, Kohli put on 57 runs with Ajinkya Rahane (22) as the duo looked to build after losing both Dhawan and Cheteshwar Pujara (16) in the second session of play. Rahane was nearly dismissed cheaply, for 5 runs, as Shannon Gabriel (1-43) induced an edge that fell short of slips. But thereafter the vice-captain tightened up his game and didn't give another chance until his eventual dismissal.
Also Read
In the meantime, the duo kept the run-rate flowing, bringing up the 200-mark in the 61st over. Then, five overs later, they brought up their 50-partnership, coming off only 65 balls. Kohli was looking particularly good in this period, as cover drives and on-drives started booming off his blade.
Just as they were looking good, Rahane was dismissed, a loose stroke off Devendra Bishoo (3-108) lobbing up and he was caught at midwicket. It was yet another loose dismissal for India, with only Murali Vijay (7) getting out to a good delivery earlier in the morning.
Thereafter, with 22 overs remaining in the day's play, it was surprising to see Ashwin come out to bat ahead of Wriddhiman Saha.
(REOPENS FGN 32)
Earlier, Dhawan scored his third Test half-century and put on 105 runs with Kohli to help ease the pressure after lunch.
The Indian skipper smacked another five boundaries in his fifty that he reached off just 75 balls. Bishoo was erratic in his line and length, not helped perhaps by the left-right combination at the crease and runs flowed easily.
In the morning, India were subjected to some testing spells in the first session after they had won the toss and elected to bat. Left-arm Ravindra Jadeja was left out with the think tank opting to go in with three pacers instead. Umesh Yadav and Mohammad Shami joined Ishant Sharma in the pace department, while Ashwin and Amit Mishra are the spin options.
Vijay and Dhawan started off then, with Gabriel and skipper Jason Holder (0/41) starting the proceedings for the hosts. The West Indies had come out with a clear ploy and made good use of the new ball on a fresh first morning pitch.
Holder was the first one to test Dhawan with a short ball, and soon it became clear what plans they had set for the left-handed opener.
Soon after, Gabriel worked up his pace and started bowling some testing deliveries to Dhawan. Meanwhile, Vijay looked comfortable at the crease, leaving as many deliveries as possible. And it was surprisingly good bounce that got him, as he looked to play at one outside the off stump, only for the ball to kiss his glove and loop up to second slip where Kraigg Brathwaite (0-4) caught it at after a little fiddling.
Kohli, for whom this was the first loss as ODI captain,
brought up his 39th ODI fifty in 54 balls while Yuvraj also looked in full flow as they crossed 100-mark in 19th over.
Dhoni walked into a rousing welcome and Yuvraj, at the other hand, looked uninhibited, hammering Moeen Ali for a six to come close to what would have been his 52nd fifty. But soon, Yuvraj was dismissed by Plunkett, holing out to Billings with a mistime flick at deep midwicket.
Earlier, Stokes hammered the Indian attack in the final overs as his unbeaten 39-ball-57 had four boundaries and two sixes. The last seven overs produced 75 runs as England jumped from 246 for 6 to 321 for 8 after being asked to bat first.
All-rounder Hardik Pandya was the pick of the Indian bowler with figures of 10-1-49-3 and along with Ravindra Jadeja (2/62) triggered England's slide after a brilliant opening partnership of 98 between in-form Jason Roy (65) and Sam Billings (35).
Roy struck 10 boundaries and a six in what was his third fifty in a row. One drop Jonny Bairstow scored 56 from 64 balls (5x4, 1x6) and skipper Eoin Morgan slammed a quickfire 43 from 44 balls (2x4, 3x6) but the 'Men In Blue' were a shade better as the final total will suggest.
But the England skipper, fresh from an attacking century in Cuttack, kept them going before gifting his wicket flicking a terrible ball to short fine leg, which could have been easily walloped for a boundary.
The opener's unconvincing stay ended when he reverse swept Jadeja and looped straight to Bumrah.
English opener Roy notched his third fifty in a row as he along with Sam Billings did well to negotiate the first hour on a moving Eden Gardens track to put up a solid foundation.
The seamers did well to trouble the openers but failed to give any breakthrough as it was England's session, giving them a clear chance to reach 350-plus.
Roy brought up the fifty with a six over long on against Jadeja but only to become his bunny. Roy once again failed to convert his start. It was a chance to convert his start. He was done in again after a half-century. Jadeja's delivery skipped on and bowled him.