Australia require just six more Sri Lankan wickets to wrap up victory inside three days in the Boxing Day Test at Melbourne.
The hosts resumed play on 440-8, but Mitchell Johnson could not join captain Michael Clarke in bringing up his century as just 20 was added to the team's overnight score.
Sri Lanka dismissed Nathan Lyon and Jackson Bird for single figures as they eventually bowled out Australia for 460.
After finishing unbeaten on 92 with the bat, Johnson had an immediate impact at the switch of innings.
He was involved in the first two Sri Lankan wickets, running out Dimuth Karunaratne for one before having Tillakaratne Dilshan caught behind first ball.
Debutant seamer Bird chipped in with a quick double, dismissing Mahela Jayawardene and Thilan Samaraweera to leave the tourists reeling on 4-4.
Kumar Sangakkara and Angelo Mathews steadied the ship to steer Sri Lanka to 43-4 at lunch, but they still trail Australia by a massive 261 runs with just six second-innings wickets left.