A superb all-round display by Thisara Perera and Tillakaratne Dilshan's 13th One-day century helped Sri Lanka beat Pakistan by 76 runs at the Pallakele Stadium on Saturday to level the five-match series 1-1.
Man of the match Perera took a career-best six for 44 as Pakistan were bowled out for 204 in reply to the home team's 280 for four.
Sri Lanka's innings revolved around Dilshan's unbeaten 119 off 139 balls that included 11 fours and one six.
The home side made changes to their batting lineup, promoting Upul Tharanga to opener while captain Mahela Jayawardene dropped down the order to stabilise the middle.
The move paid off with Tharanga (18) and Dilshan seeing off Pakistan's new-ball bowlers with an opening stand of 37.
Dilshan played a workmanlike knock and shared half-century partnerships with Dinesh Chandimal (32) and Jayawardene (53).
Perera, promoted to number six, played a cameo innings of 24 not out in 14 balls.
With fast bowler Mohammad Sami sidelined due to a sore thumb, Pakistan's attack lacked its usual sting and the Sri Lankan batsmen took advantage, piling on the runs on a dry pitch.
Pakistan's batting was then undone by Perera who started off by holding on to a stunning return catch to dismiss Mohammad Hafeez for 14.
With a career-best 96 from 119 balls, Azhar Ali was the only visiting batsman to show any resistance.
Kumar Sangakkara rounded off a good day for the home side by snatching his 300th ODI catch, holding on to an edge offered by Younus Khan (four) having put down an easy chance off the same batsman three balls earlier.
The third ODI is in Colombo on Wednesday.
Pallakele ODI: Gul sets up Pakistan win over Sri Lanka
Analysis: The hits and flops of IPL 5
Malinga in Sri Lanka's T20, ODI squad for Pakistan tour
Perera leads Sri Lanka to T20 win over Pakistan
Malinga named World Twenty20 Ambassador