After skittling Australia for just 74 inside 28 overs, Sri Lanka didn’t have it all their own way in the run chase at one stage slumping to 4-37 after losing 3-4 but eventually steadied somewhat to reach 6-75 after 20 overs.
Wicket-keeper batsman Kushal Perera was the man to see them home remaining not out on 22 with all-rounder Thisara Perera at the other end not out on four from two deliveries.
The damage was all done by Sri Lanka with the ball, though, with opening bowler Nuwan Kulasekara man-of-the-match for his 5-22 from 10 overs. Lasith Malinga chimed in with 3-14 as Australia crumbled on the Brisbane wicket.
Kulasekara claimed the scalps of opener Phil Hughes (3), captain Michael Clarke (9), David Hussey (4), George Bailey (0) and newcomer Moises Henriques (2) in a stunning performance.
The Aussies struggled from the outset, losing openers David Warner (4) and Hughes in quick succession.
Far from his usual innings-saving antics, Australian captain Clarke had a rare shocker, managing just nine before Kulasekara clean bowled him.
Malinga also chipped in on the slaughter, taking figures of 3-14 to clean up the Australian lower-middle order in devastating fashion.
Paceman Mitchell Starc and spinner Xavier Doherty were the only two Australians to offer any resistance. Starc was unbeaten on 22, while Doherty helped the Aussies give a yelp with his 15.
Sri Lanka then made a shaky start chasing 75 with Mitchell Johnson claiming the three quick wickets of Tillakaratne Dilshan, Lahiru Thirimanne and Angelo Mathews just before the dinner interval.
Thirimanne on seven, tried to smash Johnson through point but was caught sharply by Warner and Mathews was caught the very next ball by Starc. Dilshan was caught by Clarke at first slip for 22 off 33 balls.
Sri Lanka then went into the dinner interval at 4-48 and lost Upul Tharanga afterwards for 12 and Jeevan Mendis for two, but ended up comfortably reaching 6-75 in 20 overs.
Sri Lanka now leads the five-match one-day series 2-1.