Bangladesh were dumped out of the World Twenty20 championships on Tuesday after slumping to a 64-run defeat to Sri Lanka whose miserly attack quashed early fears of an upset.
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 the previous seven games at the stadium was 164, Ashraful had reason to be confident of another surprise victory after Bangladesh beat the West Indies in the opening round.
But the run chase got off to a disastrous start with Vaas bowling opener Mohammad Nazimuddin for a duck. That started a steady procession which left Bangladesh reeling at 39 for five in the eighth over.
Ashraful, the star of the victory over the West Indies, was among the victims when he was caught by Tillekeratane Dilshan off the Vaas for four.
Vaas's fellow opener Fernando also took two wickets in his opening three-over spell, including Aftab who had looked dangerous with a rapid-fire 18 off 11 balls. Fernando was named man of the match.
There was a brace of tail-end wickets as well for the spin bowling of Sanath Jayasuriya who had earlier been out to his first ball. His departure was symptomatic of a generally lacklustre performance by the Sri Lankans who managed to score only two sixes in the course of their 20 overs.
Only a 51-run partnership between Dilshan and Mubarak at the close of the innings took the score to a respectable level.
After their defeat against Pakistan at the same ground on Monday night, it looked as if the widely-fancied Sri Lankans might be departing the tournament early before their bowlers came to the rescue.
Bangladesh's defeat on Sunday in Cape Town at the hands of Australia ensured that their second defeat in a row in the business end of the inaugural Twenty20 world championships proved terminal.
Bangladesh: Mohammad Ashraful, Mashrafe Mortaza, Abdur Razzak, Aftab Ahmed, Alok Kapali, Farhad Reza, Junaid Siddique, Mahmudullah, Mushfiqur Rahim, Nadif Chowdhury, Nazimuddin, Shakib Al Hasan, Syed Rasel, Tamim Iqbal, Ziaur Rahman.
Sri Lanka: DPMD Jayawardene, TM Dilshan, CRD Fernando, KHRK Fernando, ST Jayasuriya, KS Lokuarachchi, MF Maharoof, SL Malinga, J Mubarak, MDK Perera, KC Sangakkara, LPC Silva, WU Tharanga, WPUJC Vaas, G Wijekoon.