England collapsed to their second defeat of the World Cup as they failed to chase down a modest Sri Lanka total despite Ben Stokes' efforts.
Sri Lanka 232-9: Mathews 85*, Fernando 49, Mendus 46; Wood 3-40, Archer 3-52, Rashid 2-45
England 212: Stokes 82*, Root 57; Malinga 4-43, Dhananjaya 3-32
England's hopes of progressing smoothly to the World Cup semi-finals were dealt a blow at Headingley, where Sri Lanka landed a shock 20-run win.
The hosts were chasing a modest 233 as they sought a victory which would have seen them leapfrog Australia in first place, but instead crashed to 212 all out.
They were undone by Sri Lanka's two oldest stagers, 32-year-old Angelo Mathews digging deep for an unbeaten 85 that kept the first innings afloat and 35-year-old seamer Lasith Malinga rolling back the years with four wickets for 43 runs.
The veteran quick ripped out four of the top six in a match-turning contribution, leaving England with two defeats in their six matches and staring at a run-in which pits them against Australia, India and New Zealand.
England had been handsome favourites at the halfway stage, restricting their opponents to a modest 232 for nine with a disciplined bowling performance, but never found any momentum with the bat.
Joe Root scrapped for 57 and Ben Stokes launched a stirring late fightback before being stranded on 82 not out, Mark Wood last man out to Nuwan Pradeep in the 47th over.
There were a handful of slack shots to bemoan when the post mortem takes place, with the record-breaking, six-strewn outing against Afghanistan three days earlier a distant memory.
Jofra Archer had earlier continued his happy hunting on the big stage, taking three wickets for the fifth time in six games to join Australia's Mitchell Starc on top of bowling charts, but that was cold comfort for a side now facing considerable pressure.
Sri Lanka gambled by batting first against a side who love to chase and were soon questioning their logic, losing their openers with just three runs scored.
Captain Dimuth Karunaratne was first man down, the heartbeat of the batting order lasting just eight uncomfortable balls before nicking Archer behind.
That transferred the burden to Kusal Perera, who swiftly passed the buck, guiding Chris Woakes straight to third man. It was a grim start, although it was hard to tell from Avishka Fernando's demeanour as the 21-year-old reeled off a stylish 49.
After 10 runs off the first overs he took 14 off the sixth, a pair of cleanly-hit boundaries and a pulled six putting Archer on the back foot. His counter-attack brought a second six, Archer this time heaved out of the ground, before Wood's pace proved too hot for him to handle.
Spin duo Moeen Ali and Adil Rashid took over next, sending down their combined allocation unchanged for just 85 runs. Moeen did not concede a single boundary, while Rashid removed Kusal Mendis and Jeevan Mendis with successive deliveries.
Mathews shepherded the innings through to its close from number five, seeing out the last 20 overs and compiling a cautious but crucial contribution. Wood and Archer would return to share four more wickets but Mathews' diligence across 115 balls was decisive.
The chase was a slender one by the standards of this explosive England team but they quickly found themselves mirroring Sri Lanka's struggles.
Malinga might be 15 years into his international career and at least a couple past his peak, but he is still a threat with a new ball in his hand.
Jonny Bairstow found that out when he was trapped lbw for his second duck of the competition, a marginal DRS call upholding the decision, before James Vince edged the seamer to slip.
Joe Root and Eoin Morgan renewed the partnership that yielded 189 against Afghanistan but England's 53 for two was their lowest 15-over score since the last World Cup.
Morgan's 17 sixes seemed a long way in the distance and he battled to 21 runs before punting a low full toss right back to Isuru Udana.
Root found it just as difficult to score, only 12 of his 57 runs came in boundaries, before he feathered Malinga down the leg side.
Stokes injected an element of urgency in the 28th over, twice lifting Jeevan Mendis down the ground for six, but Sri Lanka refused to lie down.
Malinga pinned dangerman Jos Buttler lbw with a toe-crusher, before off-spinner Dhananjaya de Silva struck gold with three wickets in nine balls. Moeen holed out for 16 then Chris Woakes and Rashid edged cuts.
Suddenly Stokes was a lone voice. He played his hand well, farming the strike and bringing brief hope with consecutive sixes off Udana - but Archer and Wood could not stay with him, leaving the underdogs to toast a memorable result.