Sling-arm fast bowler Lasith Malinga grabbed 5-34 as defending champions Sri Lanka stunned Pakistan by 16 runs in the opening match of the Asia Cup on Tuesday.
Shahid Afridi's first one-day century in five years was in vain as Sri Lanka, restricted to 242-9, bowled out Pakistan for 226 in 47 overs at the Rangiri stadium.
The Pakistan captain, who came in to bat with his side struggling at 32-4, smashed 109 off 76 balls to leave the team needing just 38 runs off the last 9.2 overs with four wickets in hand.
Afridi, visibly uncomfortable at the crease due to leg cramps, was caught behind off Muttiah Muralitharan, triggering a dramatic collapse.
Malinga bowled Mohammad Aamer, had Shoaib Akhtar caught at mid-off and then yorked last man Mohammad Asif to finish with his best one-day figures.
Afridi hit eight boundaries and seven sixes in his fifth one-day hundred, the first since making 102 versus India at Kanpur on April 15, 2005.
He was let down by the Akmal brothers, Umar and Kamran, who ran themselves out after putting on useful stands with their captain.
Umar made 30, adding 73 for the fifth wicket with Afridi before Tillakaratne Dilshan beat him with a direct throw as he attempted a quick single.
Kamran had put on 49 for the sixth wicket when he charged down the wicket from the non-striker's end and was easily run out as Afridi declined his call for a run.
Earlier, fast bowler Akhtar made an impressive return to international cricket with 3-41 from 10 overs in his first game for Pakistan since May last year after recovering from a knee injury.
Sri Lanka slipped to 36-2 by the ninth over, before skipper Kumar Sangakkara (42) and Mahela Jayawardene (54) put on 83 for the third wicket.
All-rounder Angelo Mathews hit an unbeaten 55 off 61 balls to help the defending champions set a challenging target under lights after they were reduced to 168-7 by the 37th over.
India and Bangladesh, the two other teams in the four-nation tournament, will meet in their first match on Wednesday.
Each team plays the other once in the league before the top two advance to the final on June 24.