The hosts were set an unlikely 379 to win and were swiftly on the back foot when Harris struck with the first ball of the innings to dismiss Tharanga Paranavitana leg before wicket.
He followed that up with a wonderful delivery which nipped back off the seem to bowl captain Tillakaratne Dilshan for 12. Sri Lanka recovered to 34 for two at tea but they had plenty of work to do if they were to stave off a damaging loss in the first match of the three-game series.
And it could have been worse for the hosts as Kumar Sangakkara narrowly survived another lbw shout from Harris - the team total was still nought at the time - with umpire Aleem Dar judging the ball pitched outside leg stump, a view vindicated after referral.
Sangakkara and Mahela Jayawardene both moved on to 11 not out at the interval.
Earlier, spinner Rangana Herath claimed five wickets but was powerless to prevent Australia from batting themselves into a commanding position.
Herath ran through the tourists' middle-order to finish with five for 79 but Australia still managed to rack up 210 in their second innings.
Useful tail-end contributions from Harris, Trent Copeland and Nathan Lyon shifted the momentum away from the hosts on a ground on which the previous highest successful run-chase is 96.