Birmingham: A century from Jonny Bairstow and half-centuries from Jason Roy and Ben Stokes helped England post 337 for 7, although a five-wicket haul from Mohammed Shami ensured India were not batted out of the game.
Bairstow scored 111 (109), Roy 66 (57) and Stokes 79 (54) to keep England going at different stages of the game. Shami ended with 5-69, pulling things back slightly with wickets. India's spinners had a forgettable day, with Yuzvendra Chahal conceding 88 in 10 wicketless and Kuldeep Yadav giving 72 runs for one wicket.
England got what they wanted going into a big game - a flat pitch, and luck with the coin toss allowing them to bat first without pressure. It showed in the freedom with which Bairstow and Roy batted to add a 160-run stand in just 22.1 overs.
The initial phase was a test of their temperament and technique. Mohammed Shami and Jasprit Bumrah bowled probing spells, with the former in particular unlucky not to strike despite finding the edge multiple times. Bairstow had two inside edges to the fine-leg boundary, apart from being beaten numerous times.
Roy had some luck going his way too when India didn't review a caught-behind appeal off Hardik Pandya when the batsman was on 21. Roy kicked on from there, slamming the next two balls for a four and a six, setting the tone for an assault.
With Bairstow also joining in, England raced past 100 in the 16th over, from 47 for no loss in the first 10. Both batsmen went past their half-centuries, and England seemed set for a massive score with the duo adding 160 in 22.
A stunning catch from Ravindra Jadeja, running in from long-on before diving forward, broke the opening partnership to send Roy back. Bairstow played a few reverse sweeps to target the shorter boundary off Kuldeep Yadav to get past his century. India, though, pulled things back well in the middle courtesy a brilliant second spell from Shami.
The pacer's second spell read 3-1-3-2, accounting for the wickets of Bairstow and Eoin Morgan. With Kuldeep Yadav and Hardik Pandya too bowling tidily, England struggled for rhythm, scoring no boundaries between overs 28 and 37. The momentum was pulled back as they scored only 36 runs in a 12-over period, Joe Root steadying the ship.
However, Stokes continued his superb form at one end, targeting Yuzvendra Chahal who ended with the worst figures for an Indian in World Cups (10-0-88-0). It included an audacious reverse sweep that sailed over the sweeper cover boundary.
Jos Buttler played a cameo (20 off 8) but it was Stokes who kept England going in the death even as Shami bagged a couple of wickets, benefitting from the pressure created by Bumrah. Stokes kept the boundaries coming, targeting the right balls and angles to ensure England got 92 runs in the last 10.
The hosts could have ended with something over 350 but Bumrah was fantastic and unhittable in the last 10 overs.