England reignited their World Cup campaign with a superb display to defeat India by 31 runs at an electric Edgbaston.
The hosts bounced back from successive losses to defeat the only unbeaten team left in the tournament and will definitely reach the semi-finals with a win against New Zealand on Wednesday.
Jonny Bairstow crunched 111 as he reunited with the fit-again Jason Roy for an opening stand of 160.
Roy made 66 and Ben Stokes added some late impetus with 79 to lift England to 337-7.
Although England's bowling was disciplined, there was the fear that India could pull off the highest chase in World Cup history when Virat Kohli was sharing 138 with Rohit Sharma, who went on to complete a century after Kohli departed for 66.
With 102 needed from the final 10 overs, MS Dhoni and Hardik Pandya briefly raised the hopes of the ecstatic India fans, only for England to hold their nerve and restrict India to 306-5.
If England beat the Black Caps at Chester-le-Street, they will finish second or third in the group and will be in the second semi-final, probably against India or Australia, at Edgbaston on 11 July.
Lose, and they will go out if Pakistan beat Bangladesh at Lord's on Friday.
India, meanwhile, still need one win from their final two games against Bangladesh and Sri Lanka to be certain of a place in the last four.
A shock defeat by Sri Lanka followed by a heavy loss to Australia left England, the pre-tournament favorites, facing an unthinkable early exit if they did not win their final two games.
The odds against them seemed to be growing. Not only would they have to overcome the impressive Indians at an Edgbaston that would be crammed with away support, but there remained a doubt over Roy, who tore his hamstring just over two weeks ago.
Sure enough, in terms of support, Birmingham was more like Bengaluru, a raucous mix of India shirts and flags, with drums and horns creating a constant din.
But, with their backs against the wall, England was restored to somewhere near their best, not least with an almost faultless display in the field.
They were helped by winning the toss and choosing to bat first on a good pitch and, more importantly, the return of Roy, who showed no effects of his injury by seamlessly slipping back into his hugely successful partnership with Bairstow.
And, even when faced with Kohli and Rohit, then Dhoni and Pandya, England's bowlers did not buckle, to the extent that India's first six did not come until the final over.
I CC Men's Cricket World Cup, Edgbaston, Birmingham
England 337-7 (50 overs): Bairstow 111, Stokes 79, Shami 5-69
India 306-5 (50 overs): Rohit 102, Kohli 66, Plunkett 3-55
England won by 31 runs
Top four go through to semi-finals
3 New Zealand
7 Sri Lanka
8 South Africa
9 West Indies