India defeated Bangladesh by 28 runs, dashing its hopes of making it through to the semifinals as the two sides met at Edgbaston on Tuesday.
Bangladesh were given a target of 315 runs by India to pursue.
'The Tigers', as they are otherwise known, had needed to win both of their remaining matches and hope New Zealand beat England if they were to go through to the semifinals.
On the other hand, India need to win one of their two remaining group games to be certain of reaching a third successive World Cup semi-final.
With their victory against Bangladesh, the Men in Blue booked their place in the semi-finals, joining reigning title-holders Australia in the last four with a match to spare.
For the second match in a row, India's Rohit Sharma was dropped in single figures and made a hundred.
Sharma's 104, his fourth century of the World Cup, helped take India to 314-9 despite Mustafizur Rahman's 5-59.
That proved too much for the Tigers, who were dismissed for 286 with two overs to spare, India spearhead Jasprit Bumrah taking 4-55.
Bangladesh face Pakistan in their last group match at Lord's on Friday.
India meet Sri Lanka on the final day of the round-robin phase on Saturday.
India innings
India wrapped up their innings at 314-9, thanks in large part to a 180-run partnership between openers Rohit Sharma and KL Rahul.
India had gotten off to an impressive start as openers Rohit Sharma (104) and KL Rahul (77) maintained a high run rate from the get-go and formed a 180-run partnership, which, according to ESPN Cricinfo, is the highest opening stand of this World Cup so far.
They scored 69 in the first 10 overs — their highest score in the opening powerplay in the ongoing World Cup tournament according to ICC's Cricket World Cup Twitter account. The men in blue seemed to have regained their batting prowess after their defeat at the hands of England at the same venue on Sunday.
This was Sharma's fourth century during the World Cup and was scored off 92 balls. The right-handed batsman made the most of the second chance he received after Tamim Iqbal dropped a catch in the fifth over.
Bangladesh got their much-needed breakthrough in the 30th over after Sarkar dismissed Sharma soon after he scored his century. Rahul was dismissed soon after when Mushfiqur Rahim took a catch on Rubel Hossain's ball in the 32nd over.
Mustafizur Rahman starred amongst the bowlers, bagging 5-59 in his 10 over spell. He picked the all-important wickets of skipper Virat Kohli (26) and Hardik Pandya (0) in the 39th over and got his third wicket of the day as he dismissed Dinesh Karthik (8) in the 48th over. Karthik's wicket came soon after Rishabh Pant (48) walked back to the pavilion in the 45th over when Mosaddek Hossain took a shaky catch near the long boundary on a delivery by Shakib Al Hasan.
Rahman picked his final two wickets in the final over when he bowled Shami (1) and dismissed MS Dhoni (35), who was caught by Hasan when he tried to hit a fast bouncer.
Bangladesh innings
India was successful in claiming wickets at regular intervals, rendering a challenge to Bangladesh to form any meaningful partnerships aside from those of Sabbir Rahman and Mohammad Saifuddin who stuck around long enough to put up a partnership of 66 runs.
Mohammed Shami bowled out Tamim Iqbal (22) in the 10th over, bringing an end to a budding 39-run partnership that had lasted the opening powerplay. Shakib Al Hasan joined Soumya Sarkar on the crease after Iqbal's dismissal.
The second man to go was Soumya Sarkar (33) at 15.3 overs, off of Pandya's delivery which was caught by Indian skipper Virat Kohli at extra cover.
Mushfiqur Rahim (24) was the third wicket down at the end of the 23rd over as he attempted a sweep off Yuzvendra Chahal's delivery, but could not keep the ball down. It carried straight over to Mohammad Shami at midwicket.
Rahim and Shakib Al Hasan were at the time three runs shy of a 50-run partnership.
Liton Das (22), Mosaddek Hossain (3) and Shakib Al Hasan (66) all fell within the next four overs, dealing a big blow to the side's momentum.
Then, to make matters worse Jasprit Bumrah struck at 43.1 overs to claim the wicket of Sabbir Rahman (36), followed by Kumar at 44.2 overs who dismissed skipper Mashrafe Mortaza (8).
In the 48th over Bumrah was on a hat trick but ran out of wickets to claim as he took down Rubel Hossain (9) and Mustafizur Rahman (0) in succession, leaving Mohammad Saifuddin unbeaten at the end with 51 runs.
Toss and pre-match chatter
India skipper Virat Kohli had won the toss and chosen to bat first.
The two-time champions made two changes to the team that lost to hosts England at Edgbaston on Sunday.
Batsman Dinesh Karthik and fit-again paceman Bhuvneshwar Kumar made the cut in place of Kedar Jadhav and Kuldeep Yadav, with India needing to win one of their remaining two group matches to guarantee a place in the last four.
Kohli, who has hit five successive half-centuries in the World Cup, said getting runs on the board was ideal on a used wicket — it is the same pitch England and India played on Sunday.
“It's a used wicket, last game it was getting slower and slower in the second half and we think it is going to deteriorate, so it will be good to get runs on the board,” Kohli said at the toss.
“I'm really enjoying batting at the moment. It's not about milestones, it's about contributing to the team.”
Bangladesh also made two changes, with Rubel Hossain coming in for Mehidy Hasan while Mahmudullah failed a fitness test on his calf tear and was replaced by Sabbir Rahman.
Bangladesh captain Mashrafe Mortaza admitted he would also have batted first had he won the toss in a must-win game for his side.
To retain any chance of qualifying from the 10-team group phase Bangladesh need to win both of their final fixtures, against India and Pakistan, and hope results elsewhere go in their favour.
“I would have batted first against them but it's not a bad idea to chase,” said Mashrafe.
“We have to win this match, it's do-or-die.”
Teams
India: Virat Kohli (capt), Rohit Sharma, KL Rahul, Rishabh Pant, Dinesh Karthik, MS Dhoni (wkt), Hardik Pandya, Bhuvneshwar Kumar, Mohammed Shami, Yuzvendra Chahal, Jasprit Bumrah
Bangladesh: Mashrafe Mortaza (capt), Tamim Iqbal, Soumya Sarkar, Shakib Al Hasan, Mushfiqur Rahim (wkt), Liton Das, Sabbir Rahman, Mosaddek Hossain, Mohammad Saifuddin, Rubel Hossain, Mustafizur Rahman