Hosts Bangladesh will face India in the Asia Cup final after taking advantage of Pakistan's brittle top order to secure a five-wicket victory in Mirpur on Wednesday.
Bangladesh went into their final round-robin match at the Shere Bangla National Stadium knowing a victory would seal their place in Sunday's final and duly chalked up a third successive win.
Pakistan were skittled out for only 83 in their defeat to India, then slumped to 17-3 in the win over United Arab Emirates and were reduced to 28-4 in another shambolic start before Sarfraz Ahmed (58 not out) and Shoaib Malik (41) came to the rescue to guide them to 129-7.
Al-Amin Hossain (3-25) was the pick of the bowlers and Soumya Sarkar top scored with 48 as the Tigers won with five balls to spare to leave Pakistan with plenty to ponder just a fortnight before their World Twenty20 campaign starts.
Shahid Afridi would have been expecting the Pakistan batsmen to come out firing after he won the toss and elected to bat first in a crucial game, but the top order failed again to put them in the mire.
The impressive Al-Amin struck with his first ball to get Khurram Manzoor (1) caught behind and the recalled Arafat Sunny (2-35) bowled Sharjeel Khan (10) two overs later.
Mohammad Hafeez (2) and Umar Akmal (4) also failed, leaving Pakistan in disarray on 28-4 in the ninth over, but wicketkeeper-batsman Sarfraz and all-rounder Shoaib looked far more at home as they put on 70 for the fifth wicket to give the bowlers something to defend.
Tamim Iqbal (7) missed out on his return from paternity leave, but Sarkar set about putting Bangladesh on course for the final by hitting a six and five boundaries before he was brilliantly yorked by the in-form Mohammad Amir (2-26).
Bangladesh needed 26 to win off 16 balls when Amir dismissed Shakib Al Hasan (8), but Mahmudullah (22no) and Mashrafe Mortaza (12no) got them home after Mohammad Sami conceded 15 in the penultimate over to end Pakistan's hopes of facing arch-rivals India in the final.