South Africa were 200 for six at tea in reply to Australia's 494 for seven declared.
Harris took three for 44 and Johnson two for 29. Both bowlers gained reverse swing, with the accurate Harris in particular troubling the batsmen with deliveries which dipped in sharply towards right-handers.
Despite losing early wickets, South Africa scored freely during an extended morning's play, reaching 127 for four off 32 overs at lunch.
But the scoring slowed to a trickle after form batsman AB de Villiers was caught at second slip off Johnson for 14 soon after lunch.
Only 73 runs were scored off 26 overs between lunch and tea. Du Plessis was on 42 not out after facing 98 balls.
Du Plessis had two escapes. Wicketkeeper Brad Haddin, who took four catches, missed a stumping off Nathan Lyon when Du Plessis was on 30, then dropped a difficult leg side chance off Harris when the batsman was on 35.
With play starting 30 minutes earlier because of rain which cut 51 overs from the second day's play, Australian captain Michael Clarke declared overnight.
