LIVE UPDATES: SA v Australia - Day 4
Set to make an unlikely 482 to win, South Africa were 65 for three at lunch.
As he did in the first innings, Johnson took a wicket in his first over, having Alviro Petersen caught behind for one. It was Johnson's 250th Test wicket in his 57th Test match.
South African captain Graeme Smith, who was Johnson's first over victim in the first innings, hit a four off a thick outside edge in Johnson's second over but then fell to a superb catch by Alex Doolan when Smith clipped the ball firmly to short leg.
Faf du Plessis was the third man out, with the total on 49, falling victim to a ball which shot through low from Peter Siddle and trapped him in front of his stumps. It was one of several deliveries which bounced unpredictably.
Johnson, who took seven for 68 in the first innings, had figures of two for 27 at lunch.
Hashim Amla played two handsome back foot drives off Johnson and was unbeaten on 22.
Australian
captain Michael Clarke declared his side's second innings closed at 290
for four after only 3.2 overs on Saturday when Shaun Marsh was caught
behind off Dale Steyn without adding to his overnight score of 44.