Hambantota - Thisara Perera smashed 65 off 36 balls and then grabbed three wickets as Sri Lanka thumped Pakistan by 77 runs in the second one-dayer on Tuesday to level the three-match series 1-1.
Sri Lanka recovered from 194-6 to post a commanding 310-9 in their 50 overs after electing to bat, before dismissing Pakistan for 233 in 43.5 overs in the day-night match in Hambantota.
Pakistan had won the first match at the same venue by four wickets last week. The decider will be played in Dambulla on Saturday.
A second-wicket stand of 96 between Ahmed Shehzad (56) and Mohammad Hafeez (62) lifted Pakistan to 114-1 by the 18th over before nine wickets fell for the addition of 119 runs.
Hafeez, who had taken three wickets in Sri Lanka's innings, appeared in good batting form with 11 boundaries when he was leg-before to spinner Seekkuge Prasanna.
Umar Akmal was caught behind off Tillakaratne Dilshan for one and Shehzad became leg-spinner Prasanna's second victim through a smart catch by veteran wicket-keeper Kumar Sangakkara.
Left-arm spinner Rangana Herath removed skipper Misbah-ul Haq (36) and Sohaib Maqsood (nine), before Perera ensured a quick finish to the innings by taking the next three wickets.
Sri Lankan captain Angelo Mathews, who top-scored with 93, said winning the toss on the slow pitch helped win the game.
"It was a crucial toss to win because the wicket was getting slower and slower," he said. "We bowled badly in the first 10 overs but then pulled it back very well.
"We will be a lot more confident now going into the last match."
Sri Lanka were down to 62-3 when Mathews and Mahela Jayawardene (67) salvaged the situation by adding 122 for the fourth wicket.
The dismissal of Jayawardene in the 34th over -- the first of three wickets in as many overs by Hafeez -- saw Sri Lanka collapse from 184-3 to 194-6.
Perera helped Mathews add 87 off 57 balls for the seventh wicket before the captain holed out to mid-wicket against Wahab Riaz seven runs short of a century.
Perera smashed five boundaries and four sixes in his whirlwind innings as the hosts plundered 101 runs in the last 10 overs.
Hafeez finished with three for 39 from 10 economical overs, while Riaz took four for 65.
Hafeez stepped in for the prolific Saeed Ajmal, who was yet to return from Australia, where he underwent tests on his bowling action after being reported by the umpires during the preceding Test series.
Pakistan, hoping to win the one-day leg after they lost the Tests 2-0, were also without frontline batsman Younis Khan, who returned home following a death in the family.
Misbah said his bowlers let Sri Lanka's lower order off the hook.
"We had them six down and needed one more wicket quickly, but that did not happen," he said. "When we batted, we kept losing wickets and could not build partnerships.
"We missed Ajmal in this game. He would have made a big difference on a wicket like this."
The match was originally slated to be played in Colombo on Wednesday, but heavy rains in the Sri Lankan capital forced officials to change the venue and advance the game by a day.
Sri Lanka: 310-9 in 50 overs (Angelo Mathews 93, Mahela Jayawardene 67, Thisara Perera 65; Wahab Riaz 4-65, Mohammad Hafeez 3-39)
Pakistan: 233 all out in 43.5 overs (Hafeez 62, Ahmed Shehzad 56; Perera 3-19)