Kurtis Patterson became Australia's third century-maker of its first innings against Sri Lanka, scoring an unbeaten 114 in the second test at Manuka Oval on Saturday.
Patterson made Sri Lanka pay for dropping him on the first ball he faced.
Australia's century drought, which dated to Dubai in October, ended as Patterson joined Joe Burns and Travis Head in reaching three figures.
Australia declared its first innings closed at 534-5 about an hour after lunch with captain Tim Payne also unbeaten on 45.
Sri Lanka played 13 overs before tea at 47 with no loss. Dimuth Karunaratne was 29 not out and Lahiri Thirimanne unbeaten on 17.
In the morning session, Australian opener Burns' career-best innings ended on 180 after being bowled. The Queensland batsman appeared set to become the first Australian to score a double century since Steve Smith's 239 against England in December 2017.
But Burns played onto his stumps off a ball from Sri Lankan fast bowler Kasun Rajitha, adding eight runs to his overnight score.
Vishwa Fernando was the best of the Sri Lankan bowlers with three wickets for 126 runs.
Burns' innings and his record 308-run partnership with Head (161) on the first day put Australia in an almost unbeatable position to ensure it wins its first test series since the 2017-18 Ashes.
Australia beat Sri Lanka by an innings and 40 runs in the first test at Brisbane.
Follow Emirates 24|7 on Google News.