Bangladesh made a fight of it but Sri Lanka ultimately won the first test on Wednesday, denying a spirited effort by the hosts.
Chasing 521 for victory, Bangladesh looked a chance to pull off an extraordinary victory when it moved to 403-6, but lost its last four wickets for just 10 runs, giving Sri Lanka a 107-run win.
Bangladesh captain Mohammad Ashraful struck his fifth test century and Shakib Al Hasan made 96 to give Bangladesh an outside chance at a rare test win, while Muttiah Muralitharan took 4-141 to finish with 10 wickets for the match.
Resuming at 254-5, Bangladesh's run chase suffered a jolt when Ashraful was trapped lbw by Chaminda Vaas in the day's first session.
But Shakib Al Hasan took over the chief responsibility from the captain and shared a 111-run stand for the seventh wicket with wicketkeeper Mushfiqur Rahim.
Hasan was bowled by Dammika Prasad just four runs of a century, while Rahim (61) was caught by Tilakaratne Dilshan off Muralitharan, with the final two wickets then falling quickly.
Ashraful scored his fourth 100 against Sri Lanka since becoming the youngest test century-maker at Colombo on his international debut in 2001 at age 17. His knock included 16 boundaries.