Spearheaded by paceman Brett Lee, the Australians cleaned up the tourists for 246 for a massive 296-run first innings lead, bolstered to 407 runs by stumps after skipper Ricky Ponting opted against enforcing the follow-on.
At the close, Australia were 111 for one with in-form opener Phil Jaques chasing his third consecutive century on 53 and Ponting on seven.
Muttiah Muralitharan claimed his 704th Test wicket, having Matthew Hayden leg before wicket for 33, to leave him just four wickets adrift of Shane Warne's world record of 708 wickets.
The Sri Lankans, down to just three frontline bowlers with seamer Farveez Maharoof out of action with an ankle injury, posed little threat to Australia.
Lee, man-of-the-match with eight wickets in last week's Brisbane Test win, again spearheaded the Australian attack with 4-82 off 23.2 overs for the home side to take a firm grip on the Test.
Mahela Jayawardene played a captain's knock with a fighting 104, his 19th Test century and first against Australia as wickets tumbled around him.
His was the last wicket to fall, holing out to Michael Clarke off Lee to end his 267-minute vigil with 13 boundaries.
Yet again Sri Lanka's batting was not up to the task on a flat wicket that yielded 542 for five declared for the Australians in their first innings off 139 overs.
Sri Lanka lost 10 wickets for 216 off 70.2 overs on Sunday. In contrast, Australia have lost a total of 10 wickets in the series.
With two days to play, Australia are closing in on their 14th consecutive Test victory, the sequence beginning against South Africa in Melbourne in December 2005.
The Australians hold the record of most successive Test wins with 16 under the captaincy of Steve Waugh from October 1999 to February 2001.
Stuart MacGill, no longer bowling in the shadow of retired leg-spinner Warne, picked up the wickets of Sanath Jayasuriya (3) and Chamara Silva (4) to finish with 2-81 off 25 overs.
Seamer Stuart Clark deceived wicketkeeper Prasanna Jayawardene with a leg-cutter and he was caught behind for a duck. Clark also bowled Lasith Malinga for one to claim 2-32 off 16 overs.
Paceman Maharoof, who batted with the aid of a runner, was run out for 19 in a dreadful mix-up with his runner Silva.
Dilhara Fernando needlessly played at a wide Brett Lee delivery and was snapped up by Gilchrist for two.
Before lunch Lee claimed the wickets of openers Michael Vandort (14) and Marvan Atapattu (25).
Lee uprooted Vandort's middle-stump with a yorker in the 18th over and had Atapattu caught off a flying edge at the second attempt by Clarke at fourth slip.
Left-armer Mitchell Johnson captured the crucial wicket of Kumar Sangakkara, caught in the gully by Mike Hussey for 57.
Sangakkara, who missed the Brisbane match with a hamstring injury, boosted his 2007 calendar year average to an extraordinary 242.5 after amassing 485 runs for two dismissals in four innings.