Tillakaratne Dilshan and Thisara Perera starred for Sri Lanka as the hosts levelled their one-day international series against Pakistan with a comfortable 76-run victory in the second ODI in Pallekele.
Dilshan struck an unbeaten 119 off 139 balls, while Mahela Jayawardene's fifty and a late blast from Perera helped the hosts, whose batting line-up was heavily criticised following their six-wicket defeat on Thursday in the opening match of the series, reach 280-4.
Despite Azhar Ali making 96 at the top of the order, Perera took six wickets for 44 as Pakistan were all out for 204 to ensure the series is now tied at 1-1.
The hosts made just 135 for eight off 42 overs in the first ODI, but they won the toss and decided to bat first again today, with Jayawardene dropping down the order and Upul Tharanga opening the batting alongside Dilshan.
The 35-year-old was out of sorts earlier this week, but was a calming influence today and struck 11 fours and a six en route to his 13th ODI century.
With Dilshan anchoring the innings at one end, captain Jayawardene looked at ease batting down the order at five and his 53 came off just 45 balls before Perera boosted Sri Lanka's total with a blistering 24 off 14 deliveries.
Mohammad Hafeez took one for 30 from his eight overs, but the rest of Pakistan's attack struggled on a drier pitch to that of Thursday.
In response, Pakistan's top order was undermined by Perera, who took the first four wickets to fall, although they were still in with a slim chance while Azhar was still there.
When he was bowled by Nuwan Kulasekara's yorker four shy of a maiden ODI century in the 37th over with 124 runs still needed, the game was up.
Perera, who finished with career-best ODI figures, and Lasith Malinga then picked up two wickets apiece before Kulasekara had Sarfraz Ahmed trapped in front for 20 to wrap up up a comfortable win for Sri Lanka.