Top-ranked England lost for the second time when Sri Lanka secured a stunning 20-run victory at Headingley. England had been aiming to retake the lead in the World Cup standings with a win and appeared to be on track after restricting Sri Lanka to 232/9.
But, Lasith Malinga took four top-order wickets and Dhananjaya de Silva snared three in nine balls as England was bowled out for 212.
Ben Stokes went on the attack late, with nine wickets down, stroking two sixes and two boundaries after he was dropped in the outfield, but was stranded on 82 when No. 11 bastman Mark Wood was caught behind at the end of the 47th over.
Angelo Mathew’s slow unbeaten 85 in Sri Lanka’s 232-9 finished as the highest score of the match.
England’s Innings
Everything appeared to be going England's way at the innings break but when Malinga removed Jonny Bairstow on the second ball and dismissed opener James Vince (14) in the seventh over, the hosts were wobbling at 26-2.
The paceman returned to take 2-12 in his second spell, claiming his 50th World Cup wicket when he had Joe Root (57) caught behind edging down the leg side. He made it No. 51 when he trapped Jos Buttler (10) lbw with a full ball that crashed into the batsman's boot.
Malinga became just the fourth bowler to take more than 50 wickets at the World Cup, joining retired greats Glenn McGrath (71), Muttiah Muralitharan (68) and Wasim Akram (55).
He almost bagged a five-wicket haul but Stokes was dropped by Kusal Mendis at deep midwicket on his penultimate delivery and finished with figures of 4-43 off 10 overs.
De Silva ripped through the middle order with 3-3 in nine deliveries to trigger an England collapse, starting when Moeen Ali (16) was caught on the long-on boundary in the 39th over.
He had Chris Woakes and Adil Rashid caught behind in the 41st to set up a tense finish.
Sri Lanka’s Innings
Earlier, Jofra Archer moved into a share of top spot on the World Cup wicket-taking list with 3/52 as England restricted Sri Lanka to 232/9.
Fellow fast bowler Mark Wood took 3/40 to move to improve his tournament tally to 12 wickets and wrist-spinner Adil Rashid took two wickets in two balls in a haul of 2/45.
The Sri Lankans started badly after winning toss and electing to bat, slumping to 3/2 in the third over after Archer had the captain Dimuth Karunaratne caught behind in his first over and Chris Woakes dismissed Kusal Perera two balls later.
Wood ended Sri Lanka's 59-run third-wicket partnership when he dismissed Avishka Fernando, who scored 49 from 39 balls.
That brought Mathews to the crease, and he shared a 71-run stand with Kusal Mendis, who scored a patient 46 from 68 balls, before Rashid chimed in with the wickets of two Mendis on consecutive deliveries.
He had Kusal Mendis caught at mid-wicket by Eoin Morgan and then took a return catch for a soft-dismissal against Jeevan Mendis as Sri Lanka slipped to 133-5.
Dhananjaya de Silva (29) drove the hat-trick ball for two runs and combined with Mathews in a 57-run stand before Archer struck with a slower ball, with Joe Root taking a diving catch at mid-on in the 44th over.
Archer had Thisara Perera (2) caught at third man in his next over and Wood picked up two more tail-end wickets.
(With inputs from AP)
(At The Quint, we question everything. Play an active role in shaping our journalism by becoming a member today.)