Babar Azam, Hafeez and Azhar disappointed Pakistani fans while all-rounders Shoaib Malik and Imad Wasim too could not make any difference.
It was the 75 run invincible partnership between bowler Mohammad Amir and captain Sarfraz which took Pakistan towards the target and secured for the team a place in the Champions Trophy semis.
Earlier Pakistani pacers sent back the whole Sri Lankan team to pavilion on 236 after Sarfraz Ahmed won the toss and elected to field against Sri Lanka.
Both sides need a victory to join already qualified title-holders India from Group B in the last four of a tournament featuring the world’s top eight one-day international sides, with the losers knocked out.
Sri Lanka, sent in to bat, were making steady progress at 161 for three while opener Niroshan Dickwella (73) and skipper Angelo Mathews (39) were at the crease.
But the loss of Mathews sparked a middle-order collapse that saw four wickets lost for just six runs as Sri Lanka slumped to 167 for seven.
Only same late tail-order hitting, with the last three wickets adding 69 runs, got Sri Lanka past 200 in an innings where Pakistan pacemen Hasan Ali and Junaid Khan took three wickets apiece.
But with 300 now a par score in ODI cricket, Sri Lanka knew it would take something special in the field to deny Pakistan a likely semi-final against tournament hosts England in Cardiff on Wednesday.