After Nuwan Kulasekara dismissed five for 22 as the hosts just edged past their lowest ever total to post 74, but the visitors made hard work of the win.
Sri Lanka beat Australia by four wickets in third ODI
Nuwan Kulasekara was Australia's tormentor-in-chief, removing four of the hosts' top five on his way to figures of five for 22 as Australia capitulated to 40 for nine, before scrambling to 74.
That edged them past their lowest ever total of 70, scored against England in 1977 and New Zealand in 1986, as Mitchell Starc (22no) and Xavier Doherty (15) added 34 for the last wicket.
Mitchell Johnson (three for 11) reduced the tourists to 37 for four but they eventually limped to 74 for six off 20 overs. Sri Lanka lead the five-match series 2-1.
Australia found themselves in trouble right from the start as the Sri Lankans bowled a tight line.
David Warner scooped an Angelo Matthews delivery to Shaminda Eranga at mid-off in the third over and Kulasekara saw off Phil Hughes in his third over, before claiming David Hussey (four) and George Bailey for a duck with consecutive deliveries in his fourth.
The unplayable Kulasekara was not done yet, though, clean bowling both Michael Clarke (nine) and Moises Henriques (two) in the 12th over to leave the Aussies reeling at 30 for six.
Lasith Malinga (three for 14) chipped in with the wickets of Johnson (two), Matthew Wade (eight) and Clint McKay (three) to stifle any notions of an Australia fightback.
Ironic cheers rang around the Gabba stands as Australia passed 50 in the 22nd over as Starc and Doherty guided the score past the lowest ever recorded in this form of the game, before Doherty was eventually dismissed by Eranga (one for 12) to end a dismal batting performance.
Kulasekara's figures were the second best in an ODI at the Gabba, after Chris Woakes' six for 45 for England against Australia in 2011.
Sri Lanka lost Mahela Jayawardene in the first over, brilliantly caught at point by Warner off McKay, but it was the introduction of Johnson in the 10th over that had them rocking.
The left-armer took the bizarre wicket of Tillakaratne Dilshan (22) with his third ball, the opener trying to withdraw his bat but only steering the ball to Clarke at slip.
In Johnson's next over, Lahiru Thirimanne slashed straight to Warner at point and Mathews then went first ball. The all-rounder was cramped by a Johnson bouncer and edged the ball straight up in the air, with Starc first to the catch from silly mid-on.
Upul Tharanga survived the hat-trick ball, digging out a fine yorker, and then drove McKay to the boundary to stop the rot.
The scheduled tea break was taken at 48 for four and Kushal Janith Perera hit two fours from the first over back, bowled by McKay.
Starc had Tharanga caught at slip by Clarke but Perera took six off the next over to take his side within six of victory.
Jeevan Mendis tried to get there in one hit but skied the ball straight up in the air and was dropped by the usually reliable Warner.
Mendis was dismissed when an equally poor shot at Starc (two for 25) was taken at mid-on by McKay but Thisara Perera struck the winning boundary.