India maintained their unbeaten streak at the 2023 World Cup with a 100-run victory in a low-scoring contest against holders England, who are facing a premature exit following their fifth defeat in six group matches on Sunday.
Rohit Sharma saved India's blushes with a captain's knock of 87 in what initially appeared a below-par total of 229-9 on a tricky surface at the Ekana Stadium in Lucknow.
Put into bat, the hosts slumped to 40-3 in the 12th over before Rohit forged a 91-run partnership with KL Rahul (39) to arrest their slide.
Suryakumar Yadav contributed a breezy 49 down the order and India's tailenders scored some useful runs towards the end to take them past the 225-mark.
England were reduced to 52-5 inside 16 overs in a remarkable batting capitulation and were eventually bundled out for 129 in inside 35 overs with Mohammed Shami claiming 4-22 for India.
Liam Livingstone's 27 was the top score in England's sorry-looking scorecard.
"I think this was a game where we showed a lot of character," Rohit said after India's sixth successive win in the tournament.
"All the experienced players stood up at the right time and won us the game."
Holders England went into the match as the bottom-placed team with only mathematical chances of making the semi-finals after just one win in their previous five group matches.
In India, they faced the tournament's only unbeaten side looking unstoppable in their home conditions.
Jos Buttler elected to field after winning the toss and had reasons to feel vindicated as India slumped to 40-3 in the 12th over.
David Willey (3-45) began with a maiden and sent groans across the stadium in the seventh over when he dismissed Virat Kohli for a nine-ball duck.
The early setbacks forced Rohit to shelve his natural strokeplay and he combined with Rahul to arrest their slide.
India crawled to the 100-mark at the halfway stage of their innings but still had plenty of overs as well as considerable batting firepower left to make up for the loss.
Willey dismissed Rahul and Adil Rashid sent back Rohit to snuff out those hopes but Suryakumar's cheeky knock took India past 200.
England began briskly but were soon jolted out of any complacence after Jasprit Bumrah (3-32) dismissed Dawid Malan and Joe Root with successive deliveries in the fifth over of the innings.
Like Root, Ben Stokes could not open his account either and had his stumps wrecked by Shami as England's start proved worse than that of their opponents.
Kohli dropped Jonny Bairstow in the slip but the batter dragged a delivery from Shami on to his stumps to depart with England reeling at 39-4 in the 10th over.
Buttler's dismissal was emblematic of England's shambolic batting in the match.
The England captain was utterly deceived by a Kuldeep Yadav (2-24) delivery that pitched outside off-stump, turned sharply and sneaked through the yawning bat-pad gap to hit the middle stump.
"Very disappointing," Buttler said.
"At the halfway stage chasing 230 we fancied ourselves. But it's the same old story."
The man to watch in Hardik Pandya's absence
Our worst World Cup performance: Bangladesh skipper
World Cup: Another major injury blow for Sri Lanka
Netherlands' Paul van Meekeren drops a semis bombshell
From 'Sachiiin Sachiin' chants to 'Rachhiin Rachiin'