Australia's James Faulkner claimed his maiden hat-trick but could not deny Sri Lanka a series-levelling 82-run victory in the second one-day international on Wednesday.
Faulkner dismissed Kusal Perera, Angelo Mathews and Thisara Perera to achieve the feat but ended up on the losing side as Australia, chasing 289 for win, were all out for 206 in 47.2 overs.
Matthew Wade top-scored for the touring side with a fighting 76 but Sri Lanka's biggest win over Australia in terms of runs means the teams move to Dambulla for Sunday's third one-dayer with the five-match series level at 1-1.
Australia needed a strong start to chase down such a big total but Thisara Perera (3-33) dismissed openers David Warner and Aaron Finch to reduce the tourists to 16 for two.
Skipper Steve Smith (30) rekindled Australia's hopes of a fightback and Wade showed tremendous grit down the order but it was not enough to complete what would have been a record chase at the ground.
Left-arm spinner Amila Aponso was the pick of the Sri Lankan bowler, claiming 4-18 in his second one-day international.
Sri Lanka posted 288 before being all out in the 49th over, losing their last five wickets for 27 runs.
After opting to bat, Sri Lanka lost openers Danushka Gunathilaka and Tillakaratne Dilshan off successive deliveries inside the first 19 balls.
Kusal Mendis (69) and Dinesh Chandimal (48) revived the hosts with a 125-run stand.
Mendis cruised to his second successive fifty but Adam Zampa (3-42) dismissed both batsmen.
Kusal Perera (54) added 103 runs with skipper Mathews (57) to consolidate Sri Lanka's position but Faulkner and Mitchell Starc (3-53) ripped out the lower order.
Faulkner trapped Perera lbw with the final delivery of his eighth over.
The all-rounder dismissed Mathews with the first ball of his next over, caught at long-off, and bowled Thisara Perera with his next to become the sixth Australian cricketer to claim a one-day hat-trick.