Virat Kohli's team beat Bangladesh by 28 runs at Edgbaston. India won the toss and reached 314-9, with opener Rohit Sharma scoring a 92-ball 104. Seamer Mustafizur Rahman took 5-59. Bangladesh was 286 all out in reply with Shakib Al Hasan again providing the main resistance with a 74-ball 66 including six fours.
Sabbir Rahman (36) and Mohammad Saifuddin (51 not out) started to hit out and looked dangerous as they took Bangladesh from 179-6 to 245-7, needing 70 in around seven overs. India has 13 points, one behind leader Australia, and plays Sri Lanka in its final game at Headingley on Saturday.
The defeat ended any semifinal hopes for seventh-place Bangladesh, which has seven points from eight games.
Top-ranked ODI allrounder Shakib Al Hasan has reached 500 runs overall at this World Cup, the first time by a Bangladeshi at a single World Cup.
Shakib was 24 not out at the end of the 18th over with Bangladesh on 88-2 against India.
Only three other batters have reached the 500 mark, India opener Rohit Sharma (544) in this match, and Australia openers David Warner (516) and Aaron Finch (504).
India finished on 314-9 at Edgbaston to set Bangladesh a tough run chase which could have been a lot worse for the Tigers.
After Rohit Sharma and Lokesh Rahul shared a record opening stand for this tournament of 180, Bangladesh struck back to reduce India to 237-4 when Mustafizur Rahman's double wicket maiden claimed Virat Kohil on 26 and Hardik Pandya for a duck.
Sharma was out for a 92-ball 104 and Lokesh Rahul went shortly afterward for 77, also in 92 deliveries.
Rishabh Pant scored a 41-ball 48.
Mustafizur claimed a wicket on the last ball of the innings to finish on 5-59.
Bangladesh has proved it can chase large totals. It pulled off the highest successful run chase of this tournament, 322, to beat the West Indies by seven wickets with eight overs left. But India will prove a tougher opponent to score freely against.
India secures a semifinal spot if it wins. Bangladesh can't qualify if it loses.
England opener Jason Roy is fit to start against New Zealand on Wednesday after bruising his arm in the win over India at the weekend.
On his return after three games out with a left hamstring injury, Roy scored 66 against India but did not field after bruising his arm.
England captain Eoin Morgan says of Roy: "He's good, he's going to be fit for tomorrow's game."
Jofra Archer has been managing a niggle in the last couple of England games but Morgan said the paceman has "pulled up really well and should be fit to play."
England will qualify for the semifinals with a win in Chester-le-Street.
Bangladesh is fighting back against India in a group game it must win to keep semifinal hopes alive.
Seamer Mustafizur Rahman took a double wicket maiden and India is 251-4 after 40 overs from 180-0.
India captain Virat Kohli was caught on the boundary by Rubel Hussain for a 27-ball 26 off Mustafizur. The India captain threw a glove up in disgust as he walked off. Heavy hitter Hardik Pandya was caught by Soumya Sarkar without scoring two balls later in the same over.
But India still looks dangerous. Rishabh Pant has hit 36 off 25 balls, including three straight fours off Mohammad Saifuddin.
MS Dhoni is the new man in.
Rohit Sharma reached his record-matching fourth century of the Cricket World Cup before falling to Soumya Souma in the next over as India continued to dominate Bangladesh.
Sharma made the century mark in 90 balls by taking a single. That pitted him against Soumya Sarkar and he was caught by Liton Das after a mis-hit drive with India on 180-1 in the 30th over.
Sharma hit seven fours and five sixes in his 92-ball 104.
Sharma scored 122 not out against South Africa, 140 against archrival Pakistan, and 102 on Sunday against England. The only other batsman to hit four centuries in a World Cup is Sri Lanka great Kumar Sangakkara in 2015.
India reached 162-0 halfway through its allotted 50 overs in the highest partnership of the tournament and was in firm control of its group game against Bangladesh at Edgbaston.
Rohit Sharma, dropped by Bangladesh on 9, has hit six fours and five sixes in a 77-ball 92.
Fellow opener KL Rahul has also hit six boundaries but only one six. He is on 66 from 74 deliveries.
India will secure its semifinal spot if it wins. Bangladesh can't advance without a win.
India has made a confident start against Bangladesh, reaching 69-0 off 10 overs.
KL Rahul is 28 not out and Rohit Sharma, who was badly dropped on 9 by Tamim Iqbal, has 38.
India's start is in stark contrast to its first powerplay against England on Sunday when it reached 28-1 in an unsuccessful run chase.
India captain Virat Kohli has won the toss and chosen to bat first against Bangladesh in a group game in which both teams are still chasing a semifinal spot.
India made two changes to the team that lost to England on the same pitch in Birmingham — with a short boundary — on Sunday. Fast bowler Bhuvneshwar Kumar comes in for Kuldeep Yadav, and middle-order batsman Dinesh Karthik replaces Kedar Jadhav.
Bangladesh also made two changes to the team that beat Afghanistan in its last game eight days ago. Mahmudullah didn't pass a fitness on a calf strain and is replaced by middle-order batsman Sabbir Rahman, and fast bowler Rubel Hossain comes in for Mehidy Hasan
Second-placed India will go through with a win.
Seventh-place Bangladesh must win to stay competitive.
Bangladesh captain Mashrafe Mortaza says he would also have batted first.
Dry and sunny conditions are forecast for the day.
India: Rohit Sharma, KL Rahul, Virat Kohli (captain), Dinesh Karthik, Rishabh Pant, MS Dhoni, Hardik Pandya, Bhuvneshwar Kumar, Mohammed Shami, Yuzvendra Chahal, Jasprit Bumrah.
Bangladesh: Tamim Iqbal, Soumya Sarkar, Shakib Al Hasan, Mushfiqur Rahim, Liton Das, Mosaddek Hossain, Sabbir Rahman, Mohammad Saifuddin, Mashrafe Mortaza (captain), Rubel Hossain, Mustafizur Rahman.
India has another chance to secure a semifinal spot in the Cricket World Cup when Virat Kohli's team plays Bangladesh at Edgbaston on Tuesday.
Second-place India, which lost for the first time at the tournament against England on Sunday, has 11 points from seven games and will advance with a win.
If it beats two-time champion India, Bangladesh can move level with fifth-place Pakistan on nine points — one point behind fourth-place England. Bangladesh can't advance if it loses.
Bangladesh and Pakistan meet in their last group game at Lord's on Friday. India's final group match is against Sri Lanka at Headingley on Saturday.
India has won the last four ODIs against Bangladesh. The teams have played each other three times at the World Cup so far with Bangladesh winning in 2007 followed by victories for India in 2011 and 2015. Bangladesh and India have met once before in an ODI at Edgbaston when India won by nine wickets in the 2017 Champions Trophy with big scores from Rohit Sharma and Kohli.
The forecast is for a mild, sunny day.
More AP cricket: www.apnews.com/cricket and https://twitter.com/AP_Sports