England dealt India a bruising 31-run defeat — and in the process ended the unbeaten streak of the Men in Blue — in the World Cup clash between the two sides at Edgbaston on Sunday.
England, who came into this match on the back of successive defeats by Sri Lanka and Australia, will be assured of a place in the last four if they beat New Zealand in their last group match on Wednesday.
India can reach the knockout phase by beating Bangladesh when they return to Edgbaston on Tuesday.
England's bid to win a first World Cup title is based on aggressive top-order batting but the runs had dried up lately.
That made their 337-7 after captain Eoin Morgan won the toss on a good pitch in Birmingham all the more heartening.
Bairstow top-scored with 111 — and got himself the player of the match award — and all-rounder Ben Stokes added a brisk 79. India paceman Mohammed Shami took a career-best 5-69.
England innings
England captain Eoin Morgan won the toss in sunny conditions on a good batting pitch. The side made a respectable 337-run total at the end of their innings, with 3 wickets remaining.
The score, though defendable, was hampered by a steady fall of wickets as Mohammad Shami claimed 5 wickets in 10 overs to destabilise England.
Jason Roy (66) was the first to go at 22.1 overs off Kuldeep Yadav's delivery. The batsman sought to hit a big one but it didn't carry, going down long-on and finding its way into Ravindra Jadeja's hands after he dove to catch it merely inches off the ground.
Jonny Bairstow (111) was next at 31.4 overs caught at deep point off Mohammad Shami's delivery. The side stood at 205-2 at that point.
Then, Shami struck again at 33.4 overs to capture the wicket of Eoin Morgan (1), caught out brillianty by Kedar Jadhav who ran from fine leg and dove forward to catch the ball.
Joe Root (44) was also dismissed by Shami at 44.1 overs, caught by Hardik Pandya at fine leg.
Jos Buttler (20) was caught out and bowled — in what was his fourth wicket — by Shami.
The bowler was on fire, claiming next his fifth wicket — Chris Woakes (7).
Ben Stokes (79), in at number 5, was the last man down sent on his way by Bumrah.
Earlier, Bairstow put his spat with Michael Vaughan behind him to score a hundred that left England well-placed in their key World Cup match.
The dynamic opener made 111, his eighth one-day international century.
Bairstow and Roy, back from a torn hamstring, put on 160 — the highest first-wicket partnership of the tournament.
The pair reached 112-0 after 16 overs, smashing four sixes and 14 fours between them in front of a subdued pro-India crowd.
Roy survived a strong appeal in the 11th over with the total at 49-0 and England accelerated.
The tournament hosts, looking to win the World Cup for the first time, had badly missed Roy in their last two matches.
Roy, however, was quickly into his stride, with the Surrey star chopping his second ball from Mohammed Shami for four, then drilling wide of mid off for another boundary.
Bairstow, involved in a pre-match war of words with former England captain Vaughan after suggesting pundits wanted England to lose, had two lucky breaks when big inside edges missed the stumps.
India captain Virat Kohli brought on leg-spinner Yuzvendra Chahal in the sixth over but Bairstow soon hit him down the ground.
Jasprit Bumrah, the world's top-ranked ODI bowler, was proving tough to get away.
Roy could have been out on 21 when India all-rounder Hardik Pandya appealed for a caught behind down the legside off his fourth delivery.
But Pakistani umpire Aleem Dar signalled a wide instead and Kohli opted against a review, although replays suggested the ball had touched Roy's glove.
Roy's response was to hit Pandya's next ball for six.
Bairstow completed a 56-ball fifty when he launched Chahal for a six that just cleared the back-pedalling KL Rahul at long-on, the fielder landing awkwardly as he made a desperate attempt at a catch.
Roy then followed his opening partner to the landmark in just 41 balls.
Bairstow twice more clubbed Chahal over long-on for six and handed out similar treatment to Kuldeep Yadav before deftly reverse-sweeping the left-arm wrist-spinner for four.
A single off Pandya saw Bairstow to a 90 ball-hundred, including eight fours and six sixes. The batsman celebrated by removing his helmet and slowly punching the air.
India innings
No side have made more batting second to win a World Cup match than Ireland's 329-7 against England at Bangalore in 2011.
Title contenders India weren't up to the task as their chase petered out on 306-5.
India were a long way off from the moment opener KL Rahul was caught and bowled for a duck by Warwickshire paceman Woakes, who reeled off an impressive three straight maidens with the new ball on his home ground.
Rohit Sharma, Rahul's opening partner, should have fallen for four but Joe Root dropped a routine second-slip catch off fast bowler Jofra Archer.
It threatened to be a costly miss with Sharma going on to 102, his third century of the tournament, in front of an overwhelmingly India-supporting capacity crowd of more than 24,000.
Sharma also shared a second-wicket stand of 138 with India captain Virat Kohli, whose 66 was the star batsman's fifth successive fifty of this World Cup.
But Kohli fell when he sliced Liam Plunkett to backward point.
Sharma went to three figures, after scores of 122 not out against South Africa and 140 against Pakistan, in 106 balls with 15 fours.
But the pressure of the chase told when he was caught behind off a Woakes off-cutter to leave India 198-3 in the 37th over.
Rishabh Pant made 32 at better than a run-a-ball and it looked as if he had hit the first six of the innings only for Woakes, running round from deep backward square, to hold a brilliant diving catch.
India needed 104 more runs off the last 10 overs but their hopes faded when the big-hitting Hardik Pandya (45) holed out to substitute James Vince off fast bowler Plunkett, who justified his recall in place of off-spinner Moeen Ali with 3-55.
The final over required that India score 44 runs.
At the end of the game, India stood at 306-5, falling considerably short of the target set by England.
Prior performances at Edgbaston
England likes playing at Edgbaston, it has won its last three ODIs there and it last lost at the venue in 2014, against India.
Kohli also likes playing at Edgbaston, judging by his performances. He has been dismissed just once before in five previous innings there. His scores include 96 not out, 81 not out and 43.
The game is a 25,000-seater sellout which will be played in a raucous soccer-style atmosphere with India set to attract more fans than England. Interest in the match is intense in Birmingham with a fan zone set up in the city's Victoria Square.
Line-ups:
England: Jason Roy, Jonny Bairstow, Joe Root, Eoin Morgan (capt), Ben Stokes, Jos Buttler (wk), Chris Woakes, Liam Plunkett, Adil Rashid, Jofra Archer, Mark Wood
India: Rohit Sharma, KL Rahul, Virat Kohli (capt), Rishabh Pant, MS Dhoni (wk), Kedar Jadhav, Hardik Pandya, Kuldeep Yadav, Mohammed Shami, Yuzvendra Chahal, Jasprit Bumrah
As well as recalling Roy, England brought back paceman Liam Plunkett in place of off-spinner Moeen Ali.
Meanwhile India preferred batsman Pant to all-rounder Vijay Shankar.