Rohit Sharma shone with his fourth hundred of the 2019 World Cup as India beat Bangladesh at Edgbaston.
India win by 28 runs
India 314/9: Sharma 104, Pant 48; Rahman 5-59
Bangladesh 286: Al Hasan 66, Saifuddin 51; Bumrah 4-55, Pandya 60-3
India returned to winning ways as a 28-run victory over Bangladesh confirmed their place in the World Cup semi-finals and eliminated their Asian neighbours.
Rohit Sharma took centre stage again as he became only the second player in World Cup history to score four hundreds in the same tournament.
His opening partnership of 180 with KL Rahul - the highest at this World Cup - laid the base for India to exorcise the demons of defeat to England at the same Edgbaston ground less than 48 hours earlier.
If that first tournament loss had knocked India's self-belief, it did not show before two raucous sets of supporters.
But India were still relieved after a helping hand from Tamim Iqbal, who dropped Rohit on nine, and their own tardiness towards the end of an innings when 237 for two in the 38th over was only turned in to 314 for nine.
In that part of the game, Bangladesh fought like the Tigers they are known as to give themselves a chance of replicating the sort of spectacular run chase that had accounted for the West Indies at Taunton.
Mustafizur Rahman finished with five for 59 and Shakib Al Hasan passed 50 for the sixth time in seven innings - a World Cup record only previously achieved by Indian great Sachin Tendulkar.
But India will consider themselves to be firmly back on track even if skipper Virat Kohli, for once, made a modest contribution of 26.
Rohit, as he has done previously in this competition, made the most of some good fortune.
The opener had only scored four against England when he was spilled by Joe Root in the slips and went on to make 102.
This time Mustafizur was flicked to the mid-wicket boundary where Tamim had made good ground, but shelled the opportunity.
Shakib's spin managed to apply some control for Bangladesh, but it was to prove a costly error as Rohit bludgeoned his way to become the tournament's top run scorer with 104 from 92 balls.
Rahul's own 92-ball stay ended when he attempted to cut a delivery from Rubel Hossain that was too close to him and wicketkeeper Mushfiqur Rahim took a low catch.
Kohli pulled Mustafizur to the waiting Rubel on the mid-wicket rope and the hard-hitting Hardik Pandya fell for nought two balls later.
Rishabh Pant (48) and MS Dhoni (35) scored at over a run a ball but the loss of three wickets in the final over summed up an innings that had promised a lot more.
Bangladesh had scored 322 to beat the West Indies, the second highest successful chase in World Cup history, but lost Tamim (22) when he played on to Mohammad Shami.
Soumya Sarkar survived a DRS review on 21 after being struck on the pads by Shami, an incident which enraged India captain Kohli.
The official view was that it had struck the bat first so India lost their review, much to the obvious displeasure of Kohli who remained in deep conversation with the umpires for some time.
But Kohli had the last laugh when Soumya (33) welcomed Pandya's arrival into the attack by smashing a wide ball straight to him in the covers - one of the bowler's three victims.
An emotional Kohli appeared to say 'That's out' to Soumya and India's resentment over the review incident continued to simmer.
Yuzvendra Chahal waved Mushfiqur off the field after he hit the leg-spinner straight to Shami at mid-wicket.
The departures of Liton Das and Shakib in swift succession seemed to end the Bangladesh story.
But Mohammad Saifuddin (51 not out) and Sabbir Rahman (36) produced the first half-century partnership of the innings with 66 in nine overs.
India briefly lost Jasprit Bumrah to a shoulder injury as the paceman took a heavy fall when attempting to save runs on the boundary.
But he returned to the attack to wrap up victory, perfect yorkers to Rubel and Mustafizur dismissing Bangladesh for 286 with 12 balls remaining.
It gave Bumrah figures of four for 55 and confirmed India's place alongside Australia in the semi-finals, with England, Pakistan and New Zealand battling for the two remaining places.