Kohli became the first Indian and 10th overall to score three successive hundreds in the One-day format but it could not prevent West Indies from tasting their first win of the tour.
After making a commendable recovery from a shaky start to post 283 for nine on the board, West Indies bowlers rattled the Indian middle and lower middle-order, to snuff out a victory and level the series.
The hosts were bundled out for 240 in 47.4 overs.
India had won the lung-opener in Guwahati before West Indies ensured a tie in the second game at Visakhapatnam.
Between victory and defeat, stood a determined Kohli (107), who notched up his 38th ODI hundred and seventh against the Windies. The India skipper was going all guns blazing till he was dismissed. He hit 10 boundaries and a lone six in his 119-ball knock at the MCA International Stadium.
India had their chances till Kohli was at the crease. But West Indies skipper Jason Holder's gamble to bring in off-spinner Marlon Samuels (3-12) paid off, as he got the prized wicket of Kohli in the 42nd over and that changed the complexion of the game.
Kohli tried to pull a quicker one by Samuels, but missed it and the ball came onto the stumps. After Kohli's dismissal it was just a matter of time. Samuels added two more wickets to his kitty.
With track slowing down, it proved to be a tough job for the Indian tail-enders.
In contrast, West Indies' lower-order batsmen Ashley Nurse (40) and Kemar Roach (15) produced a crucial 56-run stand for the ninth wicket.
Kohli, who walked in early after the fall of Rohit Sharma (8), took down to settle. Looking stable as ever, the India captain notched up his fifty with a pull shot and eventually reached the three-figure mark with a single down to fine leg in company of Bhuvanehwar Kumar (10).
Shikhar Dhawan (35), Ambati Rayadu (22) and Rishabh Pant (24) got starts but failed to convert them as the Windies bowlers stuck at regular intervals.
A lot was expected from veteran Mahendra Singh Dhoni, who was dropped from the West Indies and Australia T20 series. But he fell for mere 7, giving Holder his second wicket.
For the Windies, Holder (2/46), Obed McCoy (2/38) and Ashley Nurse (2/48) played their roles to perfection.
Earlier, pacer Jasprit Bumrah denied Shai Hope a second-consecutive century on his way to a four-wicket haul but the West Indies made a superb recovery after a shaky start.
Returning to the team after being rested for the first two matches, Bumrah emerged the most effective bowler, conceding just 35 in his 10 overs.
Bumrah sent both the visiting openers -- Kieran Powell (21) and Chanderpaul Hemraj (15) -- in his first spell to give India a solid start and later dismissed Hope and Ashley Nurse (40).
Hope, who had struck an unbeaten 123 in the Visakhapatnam ODI, played a significant role in reviving the Caribbean innings with his 95-run knock, which came off 113 balls.
Towards the end, Nurse and Kemar Roach (15 not out) added crucial 56 runs for the ninth wicket, taking the side close to 300-run mark.
The West Indies batsmen got starts but could not convert them into big knocks and also struggled to form big partnerships.
Hope, though, dug in from one end, raising a 56-run stand with Shimron Hetmyer (37) for the fourth wicket. The credit to break that partnership goes to former skipper M S Dhoni's brilliant glove work as he took the bails off with lightning speed when Hetmeyer was marginally outside the crease, trying to launch Kuldeep Yadav (2/52).
Before that stumping, Dhoni had taken a breathtaking catch to remove Kieran Powell, racing towards the backward square leg boundary and diving to hold on to the top-edge off Bumrah. Hope also combined with skipper Jason Holder (32) for a 76-run stand for the sixth wicket.
Continuing with his good form and combative attitude, Hope handled the middle overs with elan. He was severe against Yuzvendra Chahal, whom he hit for sixes with ease never letting the bowler dominate.
The innings looked like falling apart again but Nurse and Roach contributed 55 runs with combined eight boundaries to ensure they have a fighting total.