The hosts collapsed to 5/55 on Wednesday before Asalanka unleashed to score 127 in 126 balls with 14 fours and five sixes, taking Sri Lanka to 214.
Australia were dismissed for 165 from just 33.5 overs in reply, with mystery spinner Maheesh Theekshana claiming 4-40 from 9.5 overs.
Victory in the first game of the two-match series brought a joyous moment for Sri Lanka after their clean-sweep defeat to Australia in the recent two-Test series.
Asalanka's century came after he won the toss and batted on a dry pitch which offered surprising early bounce and seam movement.
An enterprising 41 off 38 balls from Alex Carey was Australia's only innings of substance as an inexperienced batting line-up crumbled against a disciplined Sri Lankan attack.
Stand-in opening bowlers Spencer Johnson and Aaron Hardie led Australia's early destruction of Sri Lanka's batting.
Asalanka and Dunith Wellalage (30) began a spirited fightback before acting captain Steve Smith broke their 67-run partnership with another brilliant slips catch reminiscent of his efforts in the recent Test series.
Smith dived low to his right for a one-handed catch off an edge from part-time off-spinner Matt Short.
Johnson claimed 2-44 after taking 2-26 from his first spell, while Hardie finished with 2-13 after snaring 2-9 from his first four overs.
First change bowler Sean Abbott (3-61) also claimed a wicket in his fourth over but went for three boundaries in his fifth as Sri Lanka began to counterpunch.
Australia's front-line attack of captain Pat Cummins (ankle and paternity leave), Josh Hazlewood (calf injury) and Starc (personal reasons) are not in Sri Lanka and will also miss the rapidly approaching Champions Trophy in Pakistan, along with Mitchell Marsh (back) and Marcus Stoinis (retired).
Starc flew home after the second Test.
The tourists were further weakened by Travis Head resting and Glenn Maxwell suffering gastro.