Skipper Dasun Shanaka (3/28), mystery spinner Maheesh Theekshana (3/69) and young Matheesha Pathirana (3/58) were spot on with the ball as Bangladesh folded for 236 in chase of 258 at the R. Premadasa Stadium.
Bangladesh offered a hard fight through young Towhid Hridoy (82 off 97 balls) but the night did not have space for a one-man super show.
Now the Lankans can make a genuine charge towards the final with two matches remaining, but Bangladesh’s hopes of entering the title round were all but over after this setback.
As It Happened
They had lost to Pakistan in the Super 4 opener at Lahore by 7 wickets on Wednesday.
However, Bangladesh began their chase with them having a real chance to overhaul Lanka’s total.
Openers Mehidy Hasan Miraz and Mohammad Naim added 55 runs in 11.1 overs, but Shanaka broke the burgeoning alliance.
Miraz pulled Shanaka straight into the hands of substitute Dushan Hemantha, and he soon dismissed Naim with a sharp bouncer that the batter edged to wicketkeeper Kusal Mendis.
Bangladesh found themselves at 83 for four soon, but veteran batter Mushfiqur Rahim and Hridoy added 62 runs for the fifth wicket to take Bangladesh back on track.
Mushfiqur was not really at his fluent best but Hridoy played some lovely shots en route his fourth ODI fifty, especially in the arc between mid-wicket and fine leg.
When the boundaries were difficult to get the 22-year-old Hridoy kept the board pushing through sharp running between the wickets.
Shanaka returned to snap the threatening alliance, dismissing Mushfiqur, and a little later Theekshana trapped Hridoy in front of the wicket as Bangladesh’s spirit gradually ebbed away.
Earlier, Samarawickrama, whose 93 came off just 72 balls, and Mendis, who made an even fifty, fought hard but Lanka found the going a bit tough and ended up with a total that was just about challenging.
After the early departure of Dimuth Karunaratne, who edged pacer Mahmud to Mushfiqur behind the stumps, Lanka found some sanity through Pathum Nissanka and Kusal Mendis.
Mendis and Nissanka (40 off 60 balls) added 74 runs for the second wicket but the partnership was not always smooth.
Mendis, in particular, was scratchy in the middle and there were edges and false shots galore in his 60-ball knock.
Nissanka was relatively more fluent, but a clever slower delivery from Shoriful Islam ended his stay, as even the DRS could not save the batter from the leg-before verdict.
The home side lost three more wickets in the span of next 14 overs as they struggled for a lively middle-over phase.
Samarawickrama took charge of the situation at this juncture.
One of Sri Lanka’s better ODI batters this year, Samarawickrama negated a rather slow pitch and Bangladesh bowlers during his fluent innings.
The right-hander was sure in his feet movement and judged the length very early, a pulled six off pacer Hasan Mahmud stood as a testimony to that.
Samarawickrama and Shanaka added 60 runs for the sixth wicket that carried them past the 200-run mark before the latter got out to Mahmud, who was impressive while taking three wickets.
Samarawickrama, who eventually got out in the last over of the innings, could have carried Sri Lanka to a better place with a bit more support but that was not forthcoming.
But the Lankan bowlers ensured that his knock did not go in vain.
(With inputs from PTI)