Angus Fogg won Race 3 of Paynter Dixon Touring Car Masters at the Supercheap Auto Bathurst 1000.
Johnson dropped to fifth as both Harris and Marcus Zukanovic (XD Falcon) got by.
Harris made it into second with a move on Bressington, while Johnson charged back to third with two laps to go.
Harris briefly got ahead of Fogg with a move at Forrest's Elbow but did not have the horsepower to stay there as they dragged down Conrod Straight.
From there, Fogg held the lead until the chequered flag, while Harris narrowly beat Johnson to second.
John Bowe (Holden Torana) was officially fourth and Aaron Seton (Mustang Boss) fifth after Bressington copped a five-second time penalty for being out of line at the start.
The final Touring Car Masters race of the weekend takes place on Sunday at 0855 local time/AEDT.
Toyota 86 Racing Series
Luke King and Aaron Borg shared spoils in the opening two races of Round 3 of the Toyota 86 Racing Series.
In Race 2, King made the winning move on Borg at Hell Corner on the penultimate lap of six, with the top five rounded out by Luke van Herwaarde, Dylan Thomas, and Jaden Ransley.
Series leader Tim Brook crashed out on Lap 4 at Forrest's Elbow, having arrived too hot at the tight left-hand corner.
Earlier, Borg claimed his first ever victory in Toyota 86s, having made a strong start from pole and then held off King and van Herwaarde.
Less than 0.6s covered that top three at the end of the six-lap race, while fourth placed Lachlan Gibbons was barely more than half a second back from van Herwaarde.
Race 3 is scheduled for 6 laps on Sunday at 0745 local time/AEDT.