England suffered a stunning second defeat of the World Cup as Sri Lanka defended a modest total of 232 with a thrilling bowling display.
Despite dogged determination from Ben Stokes, England were dismissed 20 runs short of the target, and are now far from assured of a place in the semi-finals.
Still in a top four position, two points above their closest rivals Sri Lanka, the pre-tournament favourites could not wish for a harder climax to the group stages with Australia, India and New Zealand to come.
Archer and Wood on top
It all appeared to be going so well for England, reducing Sri Lanka to 3-2 and dismissing dangerman Dimuth Karunaratne for just one.
The Sri Lankan middle order have really struggled throughout the tournament but went someway to keeping their faint semi-final hopes alive with partnerships of 59 and 71 for the third and fourth wickets. Avishka Fernando made a rapid 49 from 39 before Kusal Mendis reached a patient 46 with just two boundaries.
Yet Mendis was followed back to the dressing room a ball later by Jeevan Mendis as Adil Rashid struck with consecutive balls to reduce the underdogs to 133-5.
The experienced Angelo Mathews laid down an anchor, scratching his way to an unbeaten 85 from 115 balls. But the pace of Archer and Mark Wood, who finished with three wickets apiece, proved too much as England took regular wickets and prevented their opponents from scoring. Less than 100 runs in the last 20 overs took Sri Lanka to 232-9 which appeared to be well short of par against this England side.
Regular wickets suffocate England
However, England's run chase suffered in the early stages, underpinning the importance of the absent Jason Roy. Jonny Bairstow departed for a golden duck and James Vince failed again, making just 14, as Lasith Malinga tore through the opening overs.
Just as England appeared to be recovering, Eoin Morgan was captured caught and bowled by Isuru Udana, who was particularly impressive last time out against Australia. However, the pivotal moment was to pronounce with England 106 runs short of their target but 20 overs and seven wickets still remaining.
Malinga, now 35, took the edge of Joe Root who had patiently worked his way past 50. From that moment on, England failed to make a partnership above 26 as Jos Buttler was the next to depart following a failed LBW review against Malinga. A fourth wicket for the Sri Lankan hero.
Stokes fought valiantly at the other end, counter-attacking with seven boundaries and four maximums in his unbeaten 82. Yet wickets were tumbling regularly down the other end, Dhananjaya de Silva picking up three in just ten of his deliveries.
Wood can't hold on as Stokes left stranded
The writing appeared to be on the wall at 186-9 but Stokes was not prepared to give in. Turning down singles to keep number eleven Mark Wood away from strike as much as possible, the duo put on 26 and moved within touching distance of an improbable comeback.
Yet Wood, on his fourth delivery in 19 minutes, could not resist the temptation to prod at the final ball of Pradeep's spell, edging through to Kusal Perera for his fourth catch of the contest.
A vital victory for Sri Lanka, a result that now places them in arguably the best position to dislodge England from the top four with matches against the inconsistent South Africa and West Indies to come before concluding the group stages against neighbours India.