Australia captain Michael Clarke posted his 22nd Test hundred but Shane Watson fell just short as there was finally some joy for Sri Lanka on the second day of the Boxing Day Test in Melbourne.
Clarke (106) converted his half-century into a first hundred at the MCG, with Watson dismissed for 83. Australia had moved onto 332 for six at tea - a lead of 176 on the first innings.
Mitchell Johnson (11) and Mike Hussey (seven) were unbeaten at the crease as Australia remained on track to bat Sri Lanka out of the match and claim a series-clinching victory.
The tourists showed some fight in the afternoon session after Clarke and Watson had put them to the sword during the opening session. The duo put on 194 - a record for the fourth-wicket at the MCG - as an undermanned Sri Lanka battled to remain competitive against two batsmen set at the crease and intent on scoring quickly.
But after Clarke broke Ricky Ponting's record for most Test runs by an Australian in a calendar year and then brought up his hundred with his 13th of 14 boundaries in his innings, Sri Lanka fought back with three wickets in quick succession.
Clarke chased a wide one from Shaminda Eranga and was caught by Mahela Jayawardene at second slip, before Watson, in similar style to David Warner (62) on the opening day, holed out to Thilan Samaraweera at deep square leg off the bowling of Dhammika Prasad in the next over as Australia's score fell quickly to 313 for five.
It was a poor shot from Watson and the Australia vice-captain will rue the fact that he missed a golden chance to record his third Test century, having looked at ease in registering his 19th career fifty.
When Matthew Wade followed Watson and Warner's lead and hooked a short one from Prasad to Eranga on the boundary, Australia were reduced to 315 for six. The tourists also could have had Hussey late in the session, but the veteran Australian was dropped by stand-in wicketkeeper Kumar Sangakkara off the bowling of Rangana Herath and then survived a close call for lbw on the next delivery.
Sangakkara is keeping wicket in place of Prasanna Jayawardene, who sustained a thumb injury when dismissed by Mitchell Johnson on the opening day. Sri Lanka also picked up another injury early on the second day when paceman Chanaka Welegedara hurt his hamstring following a delivery in the first hour.
That has left Mahela Jayawardene without too many bowling options and the Sri Lanka captain has used Herath for the majority of the day from the members end of the ground. Herath has bowled without much luck, with a couple of close lbw calls going against him and his skipper guilty of putting down Clarke when the Australian was on 54 - two runs short of breaking Ponting's record of 1544.