Sri Lanka confirmed their semi-final berth with the a 19-run win along with the West Indies, who had earlier in the day defeated New Zealand via a Super Over.
Pacer Lasith Malinga was the catalyst in Sri Lanka's victory as he took five for 31, restricting England to 150 for nine. England, who required a win to qualify for the semis, failed to chase down the hosts' score of 169 for six.
A partnership of 51 off 28 balls between Samit Patel (67) and Graeme Swann (34) gave the English a glimmer of hope after they had been reduced to 93 for seven but Patel's wicket in the penultimate over gave Sri Lanka a well deserved victory.
After being put into bat, Sri Lanka were again given a good start by the experienced pair of Mahela Jayawardene (42) and Tillakaratne Dilshan (16).
Dilshan, though couldn't capitalise on his start, getting trapped in front of the wickets by the lanky pacer Steve Finn.
Mahela then strung together a 39-run partnership with Kumar Sangakkara to put Sri Lanka in the driver's seat.
However, Swann dismissed both of them in one over to bring the English back into the game.
Jeevan Mendis (18) and Angelo Mathews (28) swung the match in Sri Lanka's favour again with an impressive partnership of 52 off 31 balls.
After losing two wickets in Stuart Broad's 16th over, Thisara Perera and Lahiru Thirimanne took Sri Lanka to a fighting total.
England's batting woes continued as their top-order failed to fire once more. Malinga removed Luke Wright (12), Alex Hales (3) and Jonny Bairstow (2) in one over to severely dent England's chances.
From then on it was an uphill task for the English as wickets fell at regular intervals. Off-spinner Akila Dananjaya, 18, bowled with great guile taking two for 26.
Patel and Swann gave Sri Lanka a fright later on but their departure put an end to the English resistance.