Their remaining match is against Pakistan, also in Cape Town on Thursday.
Veteran seamer Chaminda Vaas, who took two for 14 off his four overs, and Dilhara Fernando were the stars for Sri Lanka as they helped their side defend what appeared to have been a vulnerable total of 147 for five.
Bangladesh's total of 83 all out was the lowest in the tournament so far at the Wanderers in what has been something of a batsman's paradise.
Only four of their batsman made it into double figures with Shakib al-Hasan and Aftab Ahmed joint top-scoring with 18.
Jehan Mubarak top-scored for Sri Lanka with an unbeaten 31 while skipper Mahela Jayawardene, who lost the toss to his Bangladesh counterpart Mohammad Ashraful, made a run a ball 30 before being bowled by Abdur Razzaq.
The result ensured a semi-final spot for Pakistan while the winners of Thursday's showdown between the Sri Lankans and Australia in Cape Town will also go through to the last four.
Given that the highest winning total in