Paceman Clint McKay proved Australia's match-winner taking five for 28 off 9.5 overs, including the big wickets of captain Mahela Jayawardene for 15 and Dinesh Chandimal for just five.
Veteran Brett Lee chipped in with three wickets for a more expensive 59 runs.
Upul Tharanga topscored for Sri Lanka with 71 off 122 balls, but once he was caught behind off Shane Watson, Sri Lanka dropped behind the required run-rate and needed 22 for victory off the last two overs.
Wicketkeeper Matthew Wade topscored with 49 off 74 balls in Australia's innings, with fellow opening batsman David Warner hitting 48 off 45.
Match scores: Australia 231 (49.3 overs); Sri Lanka 215 (48.5 overs)