Muttiah Muralitharan took three wickets on the final evening as Sri Lanka bowled out England for 261 to win the opening Test in Kandy by 88 runs.
England began the day at 9-1 in pursuit of 350, but the top-order batting was decimated during the morning as Chaminda Vaas and Dilhara Fernando each claimed two wickets to send the tourists to lunch in trouble at 125-5.
However, their hopes of saving the game were boosted during the afternoon session as Sri Lanka claimed just one wicket. Ian Bell and Matthew Prior shared a 109-run, seventh-wicket partnership either side of tea that appeared to be taking England to a draw.
Muttiah Muralitharan, who went wicketless during his first 32 overs, had other ideas. The off-spinner removed Prior, Bell and Ryan Sidebottom within the space of 15 deliveries to put Sri Lanka on the brink.
And Lasith Malinga then sealed the result by yorking Matthew Hoggard with England less than half-an-hour from safety in worsening light.
Veteran left-arm seamer Vaas (3-56) had already dismissed Alastair Cook on the fourth evening and followed that up with a probing spell in the morning that yielded two more wickets.
Michael Vaughan - who was England's hero when they salvaged a draw in Kandy on their last tour to Sri Lanka - was the first to go in the fourth over of the day, caught behind for five playing at a ball angled across him.
Vaas' next over saw nightwatchman James Anderson (11) clean bowled, bringing Kevin Pietersen to the crease at five despite the fact he had a broken finger.
The injury did not appear to be bothering him though and his confident strokeplay suggested he not only believed England could save the game but actually go on to win it.
He hit four fours to rattle along to 18 before Fernando (2-39) managed to hit a crack and send the ball shooting through onto Pietersen's off stump.
The same bowler also tempted Paul Collingwood to tamely drive straight to short cover for 16, ending a stand of 45 that had briefly stopped the rot.
At that stage England were five down for just 90 runs and in danger of being blown away by the middle of the afternoon.
However, debutant Ravi Bopara combined with Bell to make sure there was no further loss in the morning session.
The Essex all-rounder dominated the partnership of 49, hitting seven fours including three in one Muralitharan over, before being being unfortunate to be given out lbw.
Despite being well forward and being struck outside the line, umpire Asad Rauf sided with the home team's appeal, giving Sanath Jayasuriya a 98th Test wicket in his swansong.
As the last recognised pair it was left to Bell and Prior to try and save the day and for so long they looked like doing it, batting out more than 40 overs before Muralitharan finally made an impact on the day.
After toiling away for without any success for most of the day, the record-breaking spinner bowled both batsmen in successive overs from around the wicket.
Prior had reached 63 when he failed to pick the 'doosra' while Bell's 209-ball innings of 74 ended when his tired defensive shot was not enough to keep out a sharply turning delivery.
The end was not long coming. Sidebottom (1) was adjudged lbw to give Muralitharan (3-85) three wickets in 15 balls - although the Nottinghamshire seamer walked off shaking his head as the umpire Rauf had failed to spot a thick inside edge.
Sri Lanka then completed an 88-run victory in the lengthening shadows when Malinga (1-39) bowled Hoggard (8).
England do not have long to re-group before the start of the second Test in Colombo on Sunday.