Starc landed a brutal double blow late in the session, dismissing Niroshan Dickwella (27) and Kusal Perera with consecutive deliveries as Sri Lanka buckled under the weight of its 516-run victory target.
The Sri Lankans resumed Monday at 17-0 but any hope they might have had of making inroads into Australia's lead quickly evaporated when Starc bowled opener Dimuth Karunaratne (8) with the addition of just one run.
In a superb display of fast, swing bowling on a wearing pitch Starc then removed Dinesh Chandimal for 4 to leave Sri Lanka 28-2.
Chandimal was squared up by a shorter delivery which took an edge and was caught by Marnus Labuschagne at third slip. The Sri Lanka captain stood his ground thinking that the ball might not have carried, but replays supported the umpire's signal of out.
Pat Cummins added to Sri Lanka's decline by catching Lahiru Thirimanne from his own bowling. A quicker delivery reared at the batsman, who instinctively fended away the ball which took the shoulder of the bat and flew to a diving Cummins.
Starc took the wicket that all but ended Sri Lanka's chances in the 29th over when he dimissed Dickwella and Perera with his second and third deliveries. He first bowled Dickwella with a ball which appeared to shoot through low and under the batsman's shot.
Perera was caught behind by Tim Paine. He appeared to be hovering on the crease, expecting a shorter delivery and had to adjust late when the ball was full and swinging in slightly.
At lunch Sri Lanka still trailed Australia by 429 runs.
Australia declared its firts innings at 534-5, then dismissed Sri Lanka for 215 for a 319-run lead. The Australians declared the second innings at 196-3 to lead by 516 runs and to leave Sri Lanka more than two full days to save the match.
Australia won the first, day-night test at Brisbane by an innings and 40 runs.