Birthday boy Rangana Herath grabbed a career-best 7-89 to give Sri Lanka a seven wicket win in the second and final Test against Bangladesh in Colombo on Tuesday.
Sri Lanka, needing 160 to win the match and the series, and achieved the target for the loss of three wickets.
The opening Test ended in a draw in Galle.
Bangladesh, trailing by 106 runs, were earlier bowled out for 265 in their second innings after adding 107 to their overnight total of 158-4.
Left-arm spinner Herath, who turned 35 on Tuesday, did the damage as he captured four of the remaining six Bangladeshi wickets in the morning.
Herath also completed his third haul of 10 or more wickets in a Test, having bagged 5-68 in the first innings.
Skipper Mushfiqur Rahim (40) offered some resistance before becoming Herath's 200th Test victim, caught by Angelo Mathews at first slip after hitting one six and three fours in his 87-ball knock.
Tailender Abul Hasan cracked two sixes in his unbeaten 25 to help Bangladesh cross the 250 mark.
Herath struck in his opening over of the morning, having Mominul Haque caught by Dimuth Karunaratne at short-leg with a delivery that turned and bounced. Mominul managed to add just one to his overnight score of 36.
Herath, who struck three times on Monday, claimed his fifth wicket when he bowled Nasir Hossain for a duck in his third over to reduce Bangladesh to 171-6.
Bangladesh counter-attacked, with Rahim smashing Herath for a straight six and Sohag Gazi (26) later lofting the spinner over long-off for his first six.
Gazi kept playing his shots after being dropped on 14 by Karunaratne at second slip off paceman Nuwan Kulasekara.
Gazi hit the next two deliveries for fours but his flourish did not last long. He was caught by Suranga Lakmal at long-on while attempting a big slog off Herath, who shared the new ball with Kulasekara.
Sri Lanka on Monday were bowled out for 346 in their first innings in reply to Bangladesh's 240, and will be confident of wrapping up the Test with a day to spare.