The hosts will take a 141-run lead with 10 wickets intact into the fourth day with Michael Clarke's side ending day three on 27 without loss after bowling out the visitors for 336. That advantage would have been far greater were it not for Dilshan's 147 and a 75 from all rounder Angelo Matthews.
Peter Siddle was the pick of the Australian attack, taking five for 54 in 25,3 overs as he staked a claim for a regular spot in their bowling attack.
Dilshan resumed on 50 on Sunday morning and made it to 103 before the morning session was curtailed by rain half an hour prior to the scheduled lunch break.
In a shortened afternoon session he pushed on to 132 as Sri Lanka turned a vulnerable overnight score of 87 for four into a more robust 249 for five, responding to Australia's 450 for five declared.
Mathews lasted until late in the afternoon session before going for 75, trapped lbw by Siddle. Sri Lanka had reached 289 before Dilshan's stand finally came to an end, bowled by a yorker from Mitchell Starc after an innings that contained 21 boundaries off 273 deliveries.
Australia still had work to do as Prasanna Jayawardene was providing further resistance, but once he went lbw to Siddle for 40, progress was swift.
The last three wickets came at a cost of just 20 runs. Rangana Herath was Siddle's third lbw victim for a duck, Nuwan Kulasekara was caught at deep midwicket off Nathan Lyon for 23 and Chanaka Welegedara was caught by Mike Hussey without scoring as Siddle claimed his fifth wicket.
His outstanding performance helped Australia cover for a side injury suffered by Brad Hilfenhaus. Rain delayed the start of the Australian second innings and only 1.4 overs were bowled before the weather again forced the players off.
Looking to end the day with all their wickets intact, the hosts were conservative when play resumed as openers David Warner eight off 39 balls and Ed Cowan 16 off 47, saw them to the close.