Harris ripped apart Sri Lanka's top order, as the hosts, who were set a target of 379 to win on a crumbling wicket, were tottering at 120 for five at the close of the third day's play at the Galle International Stadium.
"I was happy how I bowled even in the first innings, I don't think I was far from getting wickets then," said Harris, who had conceded just six runs from eight overs without taking a wicket on Thursday.
"I have not seen too many dry wickets like this and we were just trying to exploit the cracks."
Mahela Jayawardene, the former captain, provided a batting lesson for his teammates, making an unbeaten 57 with the help of eight boundaries. Angelo Mathews was the other not out batsman on 32, having put on 52 runs for the sixth wicket with his senior partner.
Australia start the fourth day's play on Saturday needing five more wickets to win and take the lead in the three-Test series, their first in Sri Lanka since 2004. Sri Lanka need to defy history to stop the tourists - the highest fourth innings score at the ground is 210 by New Zealand two years ago. "We are in a good position and it will be nice if we can finish it off early. But the two guys out there [Jayawardene and Mathews] are pretty settled."
The hosts, who were shot out for 105 in the first innings, succumbed to a three-wicket burst by Harris and probing bowling by Mitchell Johnson and Shane Watson.
Harris trapped Tharanga Paranavitana leg-before with the first ball of the innings and then bowled Tillakaratne Dilshan, the Sri Lankan captain, in his fourth over to leave the hosts 15 for two.
Earlier, Australia had resumed at 115 for six after the whole of the morning session was wiped out by heavy rain and were dismissed for 210 in their second innings.