Dushmantha Chameera took 5-16 after Kusal Perera struck a century as Sri Lanka denied Bangladesh an ODI series sweep.
Mushfiqur Rahim struck 125 as Bangladesh completed their first-ever bilateral ODI series win over Sri Lanka.
Mehidy Hasan claimed 4-30 before Bangladesh saw off a valiant innings from Wanindu Hasaranga to beat Sri Lanka in the first ODI.
Sri Lanka's players have refused to sign "unfair and non-transparent" contracts offered to them by their cricket board.
Kusal Perera will captain Sri Lanka in their three-match ODI series in Bangladesh after taking over from Dimuth Karunaratne.