England 337 for 7 (Bairstow 111, Stokes 79, Roy 66, Shami 5-69) beat India 306 (Rohit 102, Kohli 66, Plunkett 3-55) by 31 runs
As it happened

Jason Roy was back, despite not being fully fit. Jonny Bairstow was back to his monster-hitting mode. Liam Plunkett was back in the XI in a tactical swap, replacing Moeen Ali, and took out Virat Kohli in a chase of 338. 'New' England got their wobbling World Cup campaign back on track at Edgbaston, outbatting and outbowling India, clad in new, orange-and-dark-blue jerseys.

If England can follow up their 31-run victory on Sunday with another win against New Zealand on Wednesday, they will make the semi-finals, irrespective of the other results.

Watch on Hotstar (India only): Bairstow's century

Barely two weeks after Roy tore his hamstring during the match against West Indies, England risked Roy's fitness and he rewarded them with a tone-setting 66 off 57 balls in a 160-run opening partnership with Bairstow - the second-highest for England in a World Cup. Bairstow teed up his first World Cup hundred and although Mohammed Shami whipped up some magic with the old ball and ended with a five-wicket haul, Ben Stokes applied the finishing touches with a violent 79 off 54 balls.

In pursuit of a steep target, India dawdled to 28 for 1 in the Powerplay - the lowest in this World Cup. Rohit Sharma made his third hundred of the tournament and cranked up the tempo along with his captain Kohli, who reeled off his fifth successive fifty-plus score, but the middle order crumpled like a cheap suit. The first - and only six - of India's innings came in the last over of the game, which petered out to a tepid finish.

Watch on Hotstar (India only) - Shami's maiden ODI five-for

MS Dhoni struggled to find the boundary, as did Kedar Jadhav, and they even drew boos from the crowd. They gulped seven dots and took 20 singles in the 31 balls they were there together. Dhoni made 42 off 31 while Kedar had 12 off 13 in a bizarre passage of play as India managed only 306 despite five wickets in the shed.

In the morning, by contrast, England had kept pinging the short, 59-metre boundary. Both Bairstow and Roy were initially bothered by Shami's seam movement and Jasprit Bumrah's cramping lengths. Yuzvendra Chahal's second over, though, was a portent for the carnage that followed. Roy first spanked the legspinner through the covers and then slog-swept him over midwicket. Roy then greeted the other wristspinner Kuldeep Yadav with a down-the-track loft over the bowler's head.

India could have got Roy on 21 when he had gloved a leg-side delivery from Hardik Pandya to Dhoni. Umpire Aleem Dar deemed it a wide and Dhoni missed a tricky by not calling for India to review it. Roy added 45 to his tally before Ravindra Jadeja pulled off a blinding catch as a substitute at long-on to dismiss him.

Bairstow had endured a nervy start - 11 of his first 17 runs came off edges - but he too took a liking to India's wristspinners and the short leg-side boundaries. All told, he cracked six sixes, all off spin in the arc between deep midwicket and long-on. He marched to his half-century off 56 balls in the 16th over when he launched Chahal over long-on. KL Rahul, who was at the edge of the boundary, tried to grasp the fast-travelling ball but to no avail, and wound up hurting his back and left the field immediately.

By the halfway stage of the innings, Bairstow had a hundred off 90 balls and celebrated the landmark with a fist pump that was followed by a thumbs-up to the dressing room. England then topped 200 in the 30th over, but two overs later Shami had Bairstow carving a catch to sweeper cover for 111 off 109 balls. Shami bounced out Eoin Morgan, but then Stokes went crazy coco bananas with some assistance from Root, who contributed a more sedate 44 off 54 balls.

Stokes rolled out one outrageous stroke after another, en route to his third successive fifty-plus score, including a reverse slog-sweep off Chahal over point, who had just been whisked into the circle. Chahal would finish with 0 for 88 in his ten overs - the most expensive for India in World Cups. Stokes blitzed Shami for three successive boundaries in the penultimate over to haul his side closer to 350.

WATCH on Hotstar (US only) - Full highlights

The target looked much bigger when Chris Woakes got rid of Rahul, who returned to open, for a duck during a sequence of three consecutive maidens. Jofra Archer found Rohit's outside edge in the second over of the chase, but Root dropped a fairly regulation catch in the slips to reprieve him on 4. Archer, too, found the outside edge of Kohli, but the ball flew wide of second slip.

The two batsmen then blunted Woakes and Archer, and grew more fluent against the change bowlers. Kohli crunched Mark Wood through the covers and then Stokes through midwicket, but Plunkett sucked him into a familiar trap by hanging one up wider than a set of stumps outside off. Kohli did bite, scooping a catch to backward point.

Rohit couldn't quite adjust to the two-paced track in the early exchanges, but once he got to his fifty, he struck four fours in seven balls and just like that outscored Kohli. It was Woakes who claimed the prized scalp of Rohit in the 37th over when he tricked him with a offcutter.

Taking pace off the ball was a theme the rest of the bowlers would emulate in the end overs. In addition to bowling cutters, Plunkett ventured back-of-a-length cross-seamers and came away with the wickets of India's new No. 4 Rishabh Pant (32) and Hardik Pandya (45) was well. Pant got his World Cup debut in place of Vijay Shankar, who was nursing a toe niggle, but couldn't quite bring the target within India's reach.

India needed 104 off the last ten overs and later 71 off the last five, but with a long tail to come, Dhoni and Jadhav engaged in a snoozefest and played for the net run rate.

Deivarayan Muthu is a sub-editor at ESPNcricinfo