India finally confirmed their place in the World Cup semi-finals with a comfortable if not flawless win which eliminated spirited Bangladesh.
After Rohit Sharma and KL Rahul hit the highest opening partnership of the tournament, a fine 180, India ran out of steam to post a disappointing 314.
Bangladesh needed to win their final two games to have any chance of progressing to a first semi-final.
But despite another half century from Shakib al Hasan they fell short.
An England win against New Zealand in Durham on Wednesday is likely to see both sides join India and holders Australia in next week's semi-finals.
Middle order slowing India down?
India captain Virat Kohli meets supporter Charu Latta Patel at the end of the match
India captain Virat Kohli met supporter Charu Latta Patel at the end of the match
India returned to the top of the ODI ratings above England last week and are full of experienced, proven world-class players.
But this match again showed up some familiar shortcomings which could stand between them and a third World Cup title.
Given the platform of such an outstanding start, their middle order failed to kick on as 162-0 at halfway became 314-9 at the end.
Rohit was given a life on nine when Tamim Iqbal dropped him and the opener made Bangladesh pay, smashing five sixes as he and Rahul clocked up the seventh-best opening stand in World Cup history.
He looked in terrific nick as he became just the second player to score four centuries in a single World Cup and well set to make a mammoth score.
But he slashed a catch to Liton Das to fall just a few balls later - the eighth time a batsman has lost his wicket between 100 and 110 in 24 centuries at this World Cup.
That triggered a period of nine wickets going down for 134 runs in the last 124 balls as captain Virat Kohli (26) and Rishabh Pant (48) failed to convert good starts - Kohli caught on the same boundary he complained was 'crazily short' just two days ago.
MS Dhoni - criticised at home for his slow going in defeat to England on Sunday - divided opinion again with his knock of 35 from 33 balls, with the veteran out in the last over of the innings as Bangladesh bowler Mustafizur Rahman was rewarded for some canny death bowling with a five-for.
Good - but not good enough
India's total felt well short of what they could have hit, and Bangladesh would have started their chase in optimistic mood - especially as they chased down 322 in barely 41 overs to beat West Indies at Taunton.
Tamim, keen to make up for his costly drop, looked in great form early on, smacking three fours in the first three overs but India had already put the brakes on by the time he chopped on in the 10th over.
Bangladesh were never able to keep up with the required run rate and lost wickets at a regular rate to ease tension among the largely India-supporting crowd.
Shakib went past 50 for the sixth time in the tournament - a feat only matched by India's own little master Sachin Tendulkar, who scored seven half centuries in the 2003 edition - but he was one of three victims for Hardik Pandya when he chipped a slower ball to Dinesh Karthik for 66.
A seventh-wicket partnership of 66 between Sabbir Rahman and Mohammad Saifuddin briefly raised hopes but a lack of big hitting proved decisive - Bangladesh managed just two sixes.
The lower order kept life interesting, with 36 needed from the last three overs, but Jasprit Bumrah struck with two brilliant yorkers to wrap it up.
While India have their issues lower down their batting order, their bowling attack may be their best bet of World Cup victory, with Pandya's variations backing up the pace of Bumrah and Mohammed Shami, and the returning Bhuvneshwar Kumar moving the ball both ways at the top of the innings.
'Rohit the best around'
India captain Virat Kohli: "Bangladesh played some really good cricket and deserve credit for the fight they put up. We had to work hard for the win and we are happy to see a Q in front of our name now.
"This was a team picked specifically for this ground with a small boundary. We can't be stubborn and play the same team every game.
"I have been watching Rohit for years now, he is the best ODI player around. He is a joy to watch and is having the tournament of his life.
"When he plays well we know we are heading for a big score. He gives everyone confidence to go out and bat."
Bangladesh captain Mashrafe Mortaza: "It was a good effort - Mustafizur bowled well - but if one of the batsmen could have got to 80 or 90, it might have been different.
"We were asking too much in the end. A bit of luck didn't go our way either."
Source: BBC Sports