Defending champions England have been knocked out of the World Twenty20 after being overpowered by hosts Sri Lanka in their final Super Eights match.
Chasing Sri Lanka's 169-6, Samit Patel scored a classy 67 but England finished on 150-9 to lose by 19 runs.
Stuart Broad's side slumped to 18-3 after fast bowler Lasith Malinga took three wickets in an over on his way to figures of 5-31 in Pallekele.
Sri Lanka join West Indies, who ended New Zealand's hopes, in the last four.
India's slow bowlers skittled England for 80 in the group stages and, with so-called mystery spinners Ajantha Mendis and Akila Dananjaya in the Sri Lankan line-up, it was expected to be another trial by spin.
However, it was fiery fast bowler Malinga who blew England's top order away with a devastating burst in the third over of their reply.
Luke Wright, promoted to opener in place of the dropped Craig Kieswetter, was first to go when he cut straight to Tillakaratne Dilshan at point.
Jonny Bairstow, who also kept wicket, followed two balls later when he skied a slower ball to Nuwan Kulasekara at mid off before Alex Hales was pinned in front by a yorker.
That third wicket was unfortunate for England, with replays suggesting the ball was going to miss leg stump, and it was left to Samit Patel and Eoin Morgan to repair the damage.
Patel, enjoying the responsibility of batting at number four, looked England's most comfortable batsman as he flayed Angelo Mathews for a massive six, got stuck into Kulasekera, and then plundered 14 runs from Ajantha Mendis's first over.
Indeed, if England can take any consolation from this defeat it was the performance of Patel ahead of this winter's Test tour to India.
The Notts all-rounder dominated Mendis, who had recorded figures of 6-8 against Zimbabwe in the group stages, and cruised to 67 by mixing class with controlled aggression.
He remained unperturbed by wickets falling at the other end, with Morgan missing a reverse sweep to Dananjaya and being given out leg before, and a woefully out of form Ravi Bopara scratching around for six balls before being bowled by Jeevan Mendis.
When Swann added some late impetus with a counter-attacking 34 from 22 balls, England sensed the improbable was possible but Malinga ended those hopes when he came back to bowl Patel in the penultimate over before Kulasekera took care of Swann.
Malinga was brutally effective with the ball, but it was the elegance of Mahela Jayawardene that got Sri Lanka off to a good start with the bat.
The opener defied the early loss of Dilshan to stroke 42 before becoming the first of two wickets in as many balls for Swann.
Jayawardene holed out to Morgan at midwicket before Sangakkara was given out caught behind, despite replays suggesting he had not touched the ball.
Angelo Mathews went on the counter with a quickfire 28, but Broad stalled any momentum by dismissing him and Jeevan Mendis in consecutive deliveries.
Thisara Perera powered 26 crucial runs, including two sixes, in the closing overs before Malinga took over with the ball.