"We were always hoping that would be the case in our first innings of bowling and it came off," Johnson told Grandstand.

"Thank God we got it to go because it was a pretty good wicket. The way we batted in the first innings was exceptional and they didn't get the ball to go at all."

Johnson said the bowlers felt there was no natural swing on the pitch so they made an early decision to attempt to get the ball going reverse.

"We went quite early which can be a bit scary at times if you have a really soft ball that doesn't do anything," he said.

"It came off for us. It was one of our plans that we wanted to work on. We didn't get it to go in PE (Port Elizabeth) which was a little disappointing, but we got it to go here and it has worked beautifully."

Smith falls cheaply and announces retirement

South Africa needed a solid start to see out the new ball, but the home side only lasted five overs before Ryan Harris found the edge of captain Graeme Smith with a swinging delivery to be caught behind by Brad Haddin for 5.

The Proteas were 1 for 8, and Dean Elgar joined a nervous Alviro Petersen at the crease.

They moved the score to 42 before Elgar was out for 11 to a brilliant acrobatic catch by Brad Haddin off the bowling of James Pattinson.

Hashim Amla came in to join Petersen, who found his groove and hit several boundaries to get things moving.

He reached his 50 but then departed soon afterwards for 53 as Mitchell Johnson induced the edge for a catch behind to Haddin to have South Africa 3 for 95.

Australia gave du Plessis a couple of chances and he made them pay.

He was nearly out first ball when he looked to have missed a ball from Johnson, but replays showed he had nicked it to Haddin and would have been out.

Du Plessis then started gathering runs. His partner Amla was looking well before he was done by a jaffa from Harris, as Amla picked the wrong delivery to drive and was bowled through the gate by a brilliant reverse-swinging delivery.

That made it 4 for 121. The home side held on until lunch at 4 for 127, still 367 behind and needing 157 more to avoid the follow-on.

Johnson grabbed the prize wicket of AB de Villiers after lunch when he had the wicketkeeper caught by Michael Clarke in the slips for 14 to make it 5 for 133.

Harris chimed in three overs later, when he had JP Duminy nicking one to give Haddin his fourth catch of the innings. Duminy was gone for 4 and South Africa was 6 for 146.

Thoughts of the follow-on were growing, but Vernon Philander and du Plessis did their best to stave it off, making steady progress and frustrating the Australian attack.

Haddin had a nightmare when Du Plessis on 30 came well out of his crease to a Nathan Lyon delivery and missed it. Haddin was unable to take the opportunity to stump him.

Du Plessis kept going and the tea score was 6 for 200.

Johnson breaks key partnership after tea

The partnership had reached 95 in the final session when Johnson got one to move away from Du Plessis (67), who edged it to gully where David Warner took a good catch low down.

That made it 7 for 241, and Australia was well into the tail.

Kyle Abbott was next in, and he looked all at sea early on. He made three runs before Shane Watson unnerved him with a good bouncer and then clean bowled him next ball.

Dale Steyn came in and swung lustily at a few fast deliveries to make a quick-fire 28, but he was out with the score on 279, and Morne Morkel followed soon after for 7 to leave the Proteas all out for 287.

Australia declined to enforce the follow-on, and David Warner came out attacking in the six overs before the close.

He hit four boundaries as the tourists raced to 0 for 27 at stumps.

With two days to go, the Australians are in the box seat. Only a defiant rearguard effort from the South African batsmen can save the Test when they are likely sent in to bat again later on day four.

Play will again start half an hour early at 10am local time (7pm AEDT).