India faced its first defeat at the Cricket World Cup against England despite another century from Rohit Sharma in Edgbaston on Sunday.
Chasing 338, India fell short by 31 runs after the lower order failed to accelerate towards the end of the innings amid disciplined bowling from England's bowlers.
India's chase of 338 got off to a terrible start after opener KL Rahul was dismissed for 0. English all rounder Chris Woakes dismissed Rahul and bowled three maidens in a row to give England the ideal start.
In-form Rohit Sharma and Virat Kohli steadied the Indian innings with a 138-run partnership. Kohli scored his fifth fifty in a row but yet again failed to convert it into a century falling on 66.
Rohit Sharma however continued to steam-roll ahead and completed his third century of the tournament after his match-winning efforts against South Africa and Pakistan. After he was dismissed for 102 trying to accelerate, Hardik Pandya scored a quick-fire 45 to take India closer to the target. Rishabh Pant, playing his first game of the tournament, chipped in with 32.
But after getting off to a slow start, India's free-scoring batting was scuttled by brilliant fielding and disciplined slow-bowling by England. The run chase never appeared to be in India's control and the required run-rate climbed to over 15 runs an over leaving India with an improbable task at the end of the innings.
Earlier, Jonny Bairstow scored a brilliant century to propel England to 337-7. His swashbuckling 111 was supported by fifties from Jason Roy and Ben Stokes as England posted an imposing total despite a five-wicket haul from Mohammed Shami.
It eventually proved to be a chase too difficult to overcome for the Indian batting. The win means England move back into the top 4 ahead of Pakistan and will now qualify for the semifinals with a win over New Zealand in its final group stage match.