Sri Lanka finished 296 runs behind Australia's first innings total of 542-5 after a batting collapse but were spared the ignominy of being sent back in after Ricky Ponting decided to give his bowlers a rest and increase his team's lead before a second declaration tomorrow.
Brett Lee was again the pick of the Australian bowlers, capturing four wickets in an innings for the third time in the series, while Stuart Clark and Stuart MacGill finished with two each and Mitchell Johnson one.
The Sri Lankan skipper Mahela Jayawardene scored a superb 104 and was well supported by Kumar Sangakkara, who made 57, but the rest of the batting crumbled under the relentless pressure of the Australians.
Sri Lanka, who were beaten by an innings and 40 runs in last week's first Test in Brisbane, started the day on 30-0 and hoping to make the most of a flat pitch but were immediately in trouble when they lost both their openers in the first hour.
Lee knocked Michael Vandort's middle stump out of the ground with a yorker that brushed his pads when he was on 14, then removed Marvan Atapattu for 25 when he got a thick edge to an attempted drive and Michael Clarke held a juggling catch at gully.
Lee was unlucky not to claim Sangakkara's wicket cheaply after he was given the benefit of the doubt on a low-catch off Michael Hussey at gully, then dropped by wicketkeeper Adam Gilchrist and the express paceman also missed a chance to run out Jayawardene at the non-strikers end.
Sangakkara capitalised on his two let-offs to bring up his half-century with his ninth boundary only to throw his wicket away when he fended a short ball from Johnson straight to Hussey.
Jayawardene was almost run out for 14 after a mix-up with Sangakkara and survived two dropped catches in one over from Lee when he was in the 70s but regained his composure to bat for more than four hours to register his 19th Test century and his first against Australia as the wickets tumbled around him.
Sanath Jayasuriya, who was demoted down the order from opener, was clean bowled by MacGill for three when he tried to sweep, then Chamara Silva gave Gilchrist the first of three catches when he nicked MacGill behind on four.
Gilchrist claimed his second catch when the Sri Lankan wickekeeper Prasanna Jayawardene edged Clark behind without scoring then his third when Lee found the edge of Dilhara Fernando's bat on two.
Sri Lanka's woes were compounded by the senseless run out of Farveez Maharoof, who was batting with the aid of a runner after suffering a stress fracture in his left foot while bowling on the first day.
Maharoof made a brave 19 despite his injury but was sent packing when his runner, Silva, set off on a suicidal single that ended with him being stranded at the same end as Jayawardene.
Sri Lanka went to tea on 208-8 and lost Lasith Malinga shortly after the resumption, clean bowled by Clark from the first delivery with the second new ball.
Jayawardene reached his hundred off 188 balls when he drove Lee through the covers for his 14th boundary but the paceman finally got his revenge to wrap up the innings when the Sri Lankan skipper holed out in the deep to be the last man out.