Sri Lanka saw off a record stand between two young Bangladesh batsmen to win the second cricket Test by an innings and 90 runs with two days to spare on Thursday.
Bangladesh, trailing by 389 runs in the first innings, were bowled out for 299 in the final session of the third day's play to give the hosts a decisive 2-0 lead in the three-match series.
But Bangladesh captain Mohammad Ashraful and teenager Mushfiqur Rahim frustrated the hosts by adding 191 for the sixth wicket, their country's best ever Test partnership.
The 22-year-old Ashraful, leading his side in his first series, remained unbeaten on 129, his fourth Test century and the third against Sri Lanka. He hit 18 boundaries.
Rahim, 18, who replaced long-serving wicket-keeper Khaled Mashud for this match because of his batting abilities, justified his selection with 80.
The young duo surpassed Bangladesh's previous best partnership of 187 by Habibul Bashar and Shahriar Nafees for the second wicket against Australia in Fatullah last year.
It was left to prolific off-spinner Muttiah Muralitharan, kept wicketless for 26 overs, to break the partnership after tea when he accepted a return catch from Rahim.
That triggered a dramatic collapse as Bangladesh lost their last five wickets in less than an hour, sliding from 269-5 to 299 all out.
Chaminda Vaas finished with four for 55, while Dilhara Fernando claimed 3-60. Muralitharan was restricted to just one wicket at the cost of 84 runs.
Sri Lanka had won last week's first Test at the Sinhalese Sports Club by an innings and 234 runs.
Sri Lanka have now won all their nine Test matches against Bangladesh since their first encounter in 2001, six of them by innings margins.
Five of the Tests ended in three days and the remaining four early on the fourth morning.
It was Bangladesh's 42nd defeat in 48 matches since they gained Test status in 2000 with five draws and a lone victory against Zimbabwe.
But the latest loss came with a remarkable fightback after Bangladesh were shot out for 62 in the first innings.
Ashraful and Rahim combined when Bashar was dismissed 40 minutes after the start of the day's play to reduce Bangladesh to 78-5.
Bangladesh had added nine runs to their overnight score of 69-4 when Fernando shattered Bashar's stumps.
Ashraful and Rahim kept the Sri Lankan bowlers at bay till after the tea interval with a flurry of strokes on both sides of the wicket.
Sri Lanka claimed the second new ball after Rahim's dismissal and Vaas struck with the first two deliveries by trapping Mohammad Sharif and Mashrafe Mortaza leg-before.
Mohammad Rafique and last man Shahadat Hossain were run out in their bid to give Ashraful the strike, sealing Sri Lanka's win.
The final Test starts in Kandy on July 11.