Kumar Sangakkara joined the 10,000 runs club and Mitchell Johnson claimed his 200th Test wicket before the Australian batsmen made Sri Lanka pay for their paltry first innings total made off just 43.4 overs, with David Warner clobbering 62 off 46 balls.
Despite a late flurry of wickets Australia finished the day well on top. At the close they were 150 for three with Michael Clarke, who passed a fitness test on a strained hamstring, not out 20 and Shane Watson on 13.
"We're definitely in a strong position," Johnson said. "I think our two openers started exceptionally well.
"I'm sure they would have liked to have gone on and make hundreds and you don't want to be run out in Test match cricket, but we're three down, we're 150 and we've got a great wicket."
The Sri Lankans were ruing dropped catches off both batsmen late in the day.
Their only bright spot was Sangakkara's 58, which was ended by a stunning running catch by wicketkeeper Matthew Wade to give Johnson his 200th wicket in his 49th Test.