Despite Aftab Ahmed (33) and Saqibul Hasan (67) brave effort Bangla finished on 265-9 and face a tall order to qualify. Their best chance of success lay in their seamers' ability to take early wickets on a Mohali pitch which offered assistance to quicker bowlers.
Only Mashrafa Mortaza had the pace to do that and once Tharanga and Sanath Jayasuriya (31) negotiated his opening spell the runs started to flow, particular in the point and cover regions.
It was a shock when Syed Rasel trapped Jayasuriya lbw but Tharanga continued to play with real authority to record his fifth one-day international century - and fourth this year - off 122 balls.
Skipper Mahela Jayawardene (35) also tucked into the bowling, top-edging Farhad Reza for six and crashing three other boundaries in the same over.
After he fetched Abdur Razzak from outside off-stump straight into Aftab's hands at mid-wicket, Razzak and Rafique's spin exercised some control.
Marvan Atapattu, returning after long-term back problems, broke off the shackles with seven boundaries in his 40 and looked in good nick before perishing in the late dash for runs.
In a frenzied finish, which saw 28 come in the last two overs, Muttiah Muralitharan was run out in comical circumstances after battering Mortaza over his head for a mighty six.
Once Sangakkara had taken a fine diving catch to remove Shahriar Nafees and pouched a leg-side chance from Mohammad Ashraful it soon became clear that Bangladesh were unlikely to get close.
Aftab attempted to lead a riposte by launching Dilhara Fernando to long-leg for six and lacing him over mid-on but he too was caught behind and skipper Bashar - the Tigers' main hope - guided the ball into opposite number Jayawardene's hands. Reza was undaunted and blasted a six and three fours of Maharoof before a charge at Muralitharan resulted in an easy stumping.
Good work from Jayawardene from forward point ran out Khaled Mashud and Rafique holed out to wide long-on off Jayasuriya.
With the pressure off, teenager Hasan nudged the ball around cleverly to complete his fifty off 96 balls and Mortaza and Razzaq freed their arms to play some shots - but the game had been up long before.
Srilanka 302 for 8 in 50 (Upal Tharanga 102, Jayasuriya 31, Jayawardene 35, Atapattu 40; Abdur Razzak 2 for 49, Rasel 2 for 65, Md Rafique 1 for 37) vs Bangladesh 265 for 9 in 50 (Saqibul Hassan 67, Aftab Ahmed 33, Farhad Reza 34; Maharoof 3 for 47, Chaminda Vaas 2 for 46) Sri Lanka beat Bangladesh by 37 runs.