Mohammad Rizwan hit an unbeaten 86 to steer Pakistan to 252-7 against Sri Lanka after rain reduced their crucial Asia Cup contest to 42-overs-a-side on Thursday in Colombo.
The Super Four match is effectively a semi-final with the winner to meet India in the final of the 50-over tournament, a prelude to the ODI World Cup starting in October, on Sunday.
According to a slight DLS adjustment, Sri Lanka's target will also be 252 in 42 overs.
Pakistan elected to bat first after rain delayed the match by two hours and 15 minutes, with a reduction of five overs from each innings, before another break cut out more overs.
Sri Lanka's bowlers took regular early wickets to check Pakistan's scoring, but Rizwan hit back with his 12th ODI half-century and a 108-run stand with Iftikhar Ahmed, who made 47, to give his team a challenging total.
Fast bowler Pramod Madushan struck first as he bowled Fakhar Zaman for four with a yorker that raised the decibels in the ground.
Abdullah Shafique (52) and skipper Babar Azam (29) then rebuilt the innings in their stand of 63 despite surviving a few close calls including an lbw review off Dunith Wellalage.
Azam looked to be getting into his groove with a few boundaries but was stumped off Wellalage, a left-arm spinner who was Sri Lanka's star in their previous loss to India with 5-40.
Shafique stood strong and hit two sixes en route to his maiden ODI fifty but soon fell to fast bowler Matheesha Pathirana, who quickly struck again.
Pakistan returned from a rain break on 130-5 with Rizwan digging deep and he got support from Iftikhar, who took his time to get his rhythm and hit two sixes in his 40-ball knock.
Pathirana sent back Iftikhar for his third wicket and Madushan took two more scalps of his own late on, but Rizwan remained unbeaten and finished with a boundary.