Sri Lanka bounced back into finals contention with a bonus-point victory on the Duckworth-Lewis method after skittling out Australia for 158 off 40.5 overs and rattling up a revised winning target of 152 for two in just 24.1 overs.
It was Sri Lanka's largest ODI win over Australia in terms of balls remaining.
The Sri Lankans, who were winless before Friday's game after being held to a tie in their previous match by leaders India, moved to within three points of the Indians after four games in the tournament.
Skipper Mahela Jayawardene steered his side to victory with an unbeaten knock of 61 off 67 balls with opener Tillakaratne Dilshan hitting 45 off 41.
"The intent was good, the aggression, the tempo... it was a good, clinical finish," Jayawardene said.
"The bonus point was brilliant, we just wanted a win, but now we're definitely back in it. The bonus point was the icing on the cake."
Kumar Sangakkara reached 10,000 career ODI runs in his innings of 30 off 29 balls.
Thisara Perera was judged man-of-the-match in a wide open vote having taken two for 29 and also effected two run outs in Australia's innings.
It was Australia's fifth-biggest loss in one-day cricket in terms of balls remaining.
It was also Australia's second straight defeat in the tournament and they face India in Brisbane on Sunday, when they will again be led by Ricky Ponting in the continued absence of injured skipper Michael Clarke.
"A really poor day with bat, ball and in the field," Ponting said. "No doubt we'll have a chat about it as a group, but the bottom line is we're going to have to move on pretty quick.
"Full credit to Sri Lanka, they bowled and fielded really well, and played their shots in the chase.
"We thought we could use the seam of the ball and capitalise, but that wasn't the case. Hopefully Sunday is better than tonight."
Of the Australians, only Clint McKay (1-23 off six overs) enjoyed a good night with the ball while Brett Lee, on his return 16 days after fracturing his toe, finished with one for 42 off seven overs.
Sri Lanka set up their emphatic victory by dismissing Australia for 158 off 40.5 overs in the match, which was reduced to 41 overs-a-side by afternoon rain.
It was Australia's lowest ODI total at the Sydney Cricket Ground since 1997 and fourth-lowest in all ODIs in Sydney.
David Hussey rescued Australia from an even lower score after the home side had tottered at 88 for six before a two-hour rain delay. He hit a determined 58 off 64 balls for his third half-century of the tournament after being dropped on eight and 31.
David Warner went for 13 being deceived by a slower ball from Lasith Malinga and hitting straight to Farveez Maharoof at mid-on.
Ponting's run of single-figure scores in the series continued when he was caught and bowled by Maharoof for two.
Michael Hussey (13), brought in for Clarke, clouted a huge six off Angelo Mathews but was caught behind off the next ball and Peter Forrest followed shortly afterwards for 16 to leave Australia 74 for five.
All-rounder Maharoof, brought in for spinner Sachithra Senanayake, claimed two for 18 off eight overs.