Mushfiqur Rahim hit a gritty 125 to set up Bangladesh's maiden series victory over Sri Lanka across all formats with an emphatic 103-run win in the rain-hit second one-day international on Tuesday.
The wicketkeeper-batsman lifted Bangladesh from a precarious 74-4 to 246 all out after they elected to bat first at the Sher-e-Bangla National Stadium in Dhaka.
Sri Lanka managed just 141-9 in the tourists' revised chase of 245 in 40 overs as Bangladesh took an unbeatable 2-0 lead in the three-match series.
Mehidy Hasan Miraz and Mustafizur Rahman claimed three wickets each while Shakib Al Hasan took two key scalps.
"Lucky to win two games. We haven't played the perfect game yet," said Bangladesh skipper Tamim Iqbal.
"We lost a lot of wickets in the middle, and 200 was looking difficult, but Mahmudullah and Mushy played very well."
Mushfiqur remained the hero as he recorded his eighth ODI century and put on a crucial 87-run fifth-wicket stand with Mahmudullah Riyad, who made 41.
Fast bowler Dushmantha Chameera struck twice in his first over to send back Tamim for 13 and Shakib Al Hasan for nought.
Chameera wrapped up Bangladesh's innings in 48.1 overs after sending back the in-form Mushfiqur, who completed his eighth ODI hundred following a second rain interval.
Mushfiqur, who scored a match-winning 84 in the previous match, stood firm with Mahmudullah to take the attack to the opposition.
Mahmudullah kept up his form after hitting 54 in the opening ODI, but fell short of his fifty when Lakshan Sandakan, who returned figures of 3-54, got him caught behind.
Mushfiqur put on another defiant stand of 48 with Mohammad Saifuddin, who was run out on 11, for the eighth wicket.
Saifuddin, who got a hit on the helmet during his knock, was later replaced by Taskin Ahmed as concussion sub -- the first for a game held in Bangladesh.
Bangladesh, who won Sunday's opener by 33 runs, were always on top once debutant pace bowler Shoriful Islam dismissed skipper Kusal Perera for 14 in the sixth over of innings.
Opener Danushka Gunathilaka made highest 24 runs while one-down Pathum Nissanka made 20 for Sri Lanka, who had never lost to Bangladesh in eight bilateral series.
Sri Lanka were 121-9 in 38 overs when rain halted the game for more than half an hour, forcing the match officials to give them a revised D/L target - reducing two runs and 10 overs.
Isuru Udana hit Shoriful for two sixes to add 20 runs in the last two overs to only reduce Sri Lanka's margin of defeat.
"It's very disappointing. Both matches, the middle-order collapsed and lack of experience cost us. We need to have a serious talk," said Sri Lanka captain Perera.
The third and final match is on Friday at the same venue.