Seam bowler Stokes claimed three wickets to help restrict India, who were chasing 322 for victory, to 316-9 as Kedar Jadhav’s 90 went in vain.
Chris Woakes, who bowled the final over with India needing 16 to win, held his nerve to give England their first victory on the tour.
Earlier Stokes hit an unbeaten 39-ball 57 to help England post 321-8 after being put into bat at Kolkata’s Eden Gardens.
India lost their openers early in the chase but Kohli (55) and Yuvraj Singh (45) put on 65 runs for the third wicket to rebuild the innings.
Kohli, who was dropped on 35, failed to capitalise on the reprieve after losing his wicket to Stokes. He was caught behind chasing a wide delivery outside the off stump.
With Yuvraj (45), fresh from his match-winning 150 in Cuttack, and former captain Mahendra Singh Dhoni (25) also back in the pavilion, India slipped to 173-5.
First match hero Jadhav, who hit a brilliant 120 in India’s opening win in Pune, and Hardik Pandya (56) then put on 104 runs to revive the chase.
The batting duo took the opposition attack by surprise with their powerful hitting as they struck 16 fours and three sixes between them.
Stokes got Pandya and Ravichandran Ashwin in his final two overs to hurt the Indian chase.
Jadhav though carried on to give the Eoin Morgan-led side a scare but his departure on the penultimate delivery spelled the end for the hosts.
In England’s innings, fifties from Jason Roy (65) and Jonny Bairstow (56) proved crucial before Stokes took the team total to well past the 300-run mark.
England rode on a 98-run opening stand between Roy (65) and Sam Billings (35) before the Indian bowlers came back with regular strikes.
Paceman Pandya claimed three wickets while left-arm spinner Ravindra Jadeja got two.
Morgan, who struck a valiant 102 in England’s second loss on Thursday, once again looked like he would pilot the innings with some assured hitting.
The left-hander shared an 84-run third-wicket partnership with Bairstow (56), who was added to the side in place of injured Alex Hales, before falling to Pandya.
Stokes ensured the efforts of the top order were not in vain as his 73-run seventh-wicket stand with Woakes (34) helped England put on 58 runs in the final five overs.
The two teams now head for the three-match Twenty20 series starting January 26 in Kanpur.
India's captain Virat Kohli (R) reacts after losing his wicket as England's Ben Stokes(C) celebrates with teammates during the third One Day International match between India and England at the Eden Gardens Cricket Stadium in Kolkata on 22 January, 2017.
0 comments: