Sri Lanka found prodigious swing Friday to shoot out Australia for 74 runs, their lowest one-day international total in 27 years, and take a 2-1 lead in the series.
The tourists also swung their bats at everything Australia threw at them, missing frequently and losing six wickets before struggling to 75, in a bizarre match that ended with thirty overs to spare.
Mitchell Johnson led Australia's riposte with three wickets for 11 runs off just three overs.
But the hosts put down three catches and fumbled a clear runout chance to forego any real hope of defending such a low total.
They did manage to make it tough for the tourists though.
Sri Lankan captain Mahela Jayawardene scored just one, caught brilliantly by David Warner at backward point off Clint McKay in the first over.
Lahiru Thirimanne, who made a maiden century in Adelaide on Sunday, was out for seven from a Johnson delivery that Warner snatched out of the air.
Angelo Mathews went first ball caught Mitchell Starc again off Johnson. Upal Tharanga battled to 12 before Starc had him caught by Michael Clarke and Jeevan Mendis soon top edged the same bowler to McKay for two.
It was replacement wicket-keeper Kushal Perera, showing great poise and power with the ball zipping around, who found the boundaries after tea to ensure victory.
The youngster was not out 22, the same total as Dilshan who rode his luck before edging Johnson to Clarke in the slips with the score on 33.
Man-of-the match Nuwan Kulasekara did the damage for Sri Lanka taking five wickets for 22 and Lasith Malinga picked up three for 14.
Skipper Clarke won the toss and decided to bat on what he called "a really good wicket".
However his team fell to a prolonged inswing onslaught in the third match of a series of five.
Australia's lowest ODI score of 70 came against England in 1977 at Edgbaston, with the embarrassing scoreline repeated against New Zealand in 1986 at Adelaide.
At one stage, Australia were 40-9, but ninth man Starc helped them avoid the ignominy of a new record-low with a knock of 22, when it had looked like no one would get into double figures.
"A horrible day to be honest, our batting performance was very poor," Clarke admitted. "We are really disappointed."
Warner was first to go, for four, clubbing a catch to Shaminda Eranga at mid-off off Mathews in the third over.
Phillip Hughes had made only three when Jayawardene held a slip catch off Kulasekara who was on fire.
Clarke drove for the first boundary while David Hussey followed suit with a glance for four, but it was not to last.
Hussey was given not out to a Kulasekara inswinger caught by keeper Perera, but Jayawardene won the wicket on appeal. Television replays showed a clear edge.
Australia were 21-3 in the eighth over.
The Sri Lankan swinger had George Bailey lbw first ball and then beat Clarke, one of the best Test batsmen in the world, to hit middle stump.
New boy Moises Henriques, back in the side after three years out, went two balls later with the score 6-30.
Johnson, Matthew Wade and McKay soon followed as slinger Malinga picked up quick wickets.
Starc proved batting was not impossible and clipped 22 runs off 28 balls before Xavier Doherty offered a simple catch off Eranga to put an end to the innings.
Clarke refused to make excuses.
"I think the wicket was fine, there's always a bit of pace and bounce," he said.
"We have no excuse ... our execution needs to improve in two days time. It's going to be tough. Sri Lanka are full of confidence
The next match is at the Sydney Cricket Ground on Sunday and the final game in Hobart on Wednesday.