The chase wasn't impossible but Shakib Al Hasan didn't get any support from the other end as Bangladesh were bundled out for 286.
Birmingham: Rohit Sharma's dream run with the bat and Jasprit Bumrah's brilliance at the death helped India beat Bangladesh by 28 runs to clinch a semi-final berth in the ongoing ICC World Cup here on Tuesday.
It was Rohit's (104 off 92 balls) record-equalling fourth century in a single edition and his 180-run opening stand with K L Rahul (77 off 92 balls) that laid the foundation for a par-score of 314 for nine after India opted to bat.
The chase wasn't impossible but Shakib Al Hasan (66 off 74 balls) didn't get any notable support from the other end as Bangladesh were bundled out for 286 in 48 overs.
But Mohammed Shaifuddin's 51 not out off 39 balls did raise slim hopes of a victory before Bumrah (4/55), with his toe-crushers, dashed Bangladesh's optimism.
Hardik Pandya (3/60 in 10 overs) also showed that his worth in limited overs with his display with the ball.
India with 13 points from eight games will now hope to beat Sri Lanka in their final game and finish on top with 15 points, in case Australia (14 from 8 games) lose their last league match against South Africa.
Bangladesh can go up to maximum nine points if they beat Pakistan but their last four hopes were dashed as Australia, India, New Zealand (11 from 8 games) and England (10 points from 8) are already above them.
Ironically, on a day when Rohit's record 26th ODI hundred ensured a seventh semi-final appearance for his side, Bangladesh were left high and dry despite Shakib's coveted record double of 500 plus runs and 10 plus wickets in a single edition of the World Cup.
For Indian bowlers, it was another good day in office after English nightmare as Yuzvendra Chahal (1/50 off 10 overs) found his mojo back with a controlled effort while Bhuvneshwar Kumar (1/51 in 9 overs) also bowled a steady first spell in the company of ever-reliable Bumrah.
Shakib also couldn't play in his free-flowing manner as there wasn't a single half-century stand for the first five wickets.
Sabbir Rahaman (36) and Saifuddin added 66 for the seventh wicket but Bumrah, coming on for his third spell, ended their hopes.
Earlier, Mahendra Singh Dhoni's (35 off 33 balls) another failure at the death saw India score only 63 runs in the last 10 overs after Rohit's 26th ODI century and Rishabh Pant's (48 off 40 balls) flamboyance had taken India to 251 for 4 in 40 overs.
Rohit's love affair with Bangladesh continued as he had also scored his first World Cup ton in the previous edition in Australia and another century in the 2017 Champions Trophy semi-final at this very Edgbaston ground against the same opposition.
There were no marks for guessing that Virat Kohli would have opted to bat and Rohit along with Rahul added 180 for the opening wicket to set up the platform.
En route his ton, that had seven fours and five sixes, Rohit also equalled Kumar Sangakkara's record of four tons in a single edition of the World Cup, having already registered scores of 122 not out (vs South Africa), 140 (vs Pakistan) and 102 (vs England) in earlier games.
Mashrafe Mortaza started the proceedings but pulled himself out after solitary over as Rohit hit first of his five sixes -- a pull-shot on the shorter side.
Rohit enjoyed a reprieve on a personal score of nine when Tamim Iqbal, at deep mid-wicket, dropped a sitter off Mustafizur Rahman (5/59 in 10 overs).
However, the two sixes that will stay in his memory for a long time was a cover driven six over extra cover off Saifuddin and a straight six off Mustafizur. He also pulled off-spinner Mosaddek Hossain and Shakib for two more sixes.
Skipper Kohli (26, 27 balls), after five successive half-centuries, missed out on one more big score while Pant looked good playing some audacious shots.
Even as Pandya missed out after being deceived by an off-cutter from Mustafizur after he had accounted for Kohli, Pant took it upon himself, hitting Saifuddin for three successive boundaries in the 40th over.
Dhoni looked ill at ease against Mustafizur's brilliant variations and Shakib's (1/41 in 10 overs) accuracy. The former India skipper refused two singles in the final over and was out off the third delivery as India lost momentum towards end of the innings.
Just when it looked that Pant will launch a brutal final assault, his mistimed slog sweep went straight to Mosaddek at deep backward square, who somehow managed to hold on to the catch after an initial fumble.
However the total proved good enough for a smooth passage into the final four phase.