Hashim Amla's blistering stroke-play and Morne Morkel's fearsome bowling put South Africa in control of the second teat against Australia as they closed the third day on 192 for four.
The Proteas led by 369 runs with six second-innings wickets remaining and two days to go on a ground where the highest score chased down for victory was 271 by Australia in 1997.
Amla will resume on 93 not out with 21-year-old debutant Quinton de Kock on nine.
South Africa first innings 423
Australia first innings 246
South Africa second innings
G Smith b Johnson 14
D Elgar c Haddin b Siddle 16
H Amla not out 93
F du Plessis c Haddin b Siddle 24
A de Villiers c Haddin b Johnson 29
Q de Kock not out 9
Total: (4 wickets; 47 overs) 192
Fall of wickets: 1-20 2-42 3-112 4-167
Amla's positive stroke-play against all the Australian bowlers helped South Africa score at more than four runs an over and accelerated the game forward after a slow first two days.
Australia did make inroads into the top order, Graeme Smith (14) failing again after being bowled by Mitchell Johnson off the inside edge.
Johnson also accounted for AB De Villiers (29). Peter Siddle weighed in with two wickets, Dean Elgar (16) and Faf du Plessis (24), both caught behind by Brad Haddin.
Fast bowler Morkel proved the catalyst for a sizeable South African lead as his fiery bowling helped restrict Australia to 246 in their first innings.
Morkel's firey spell
Having resumed on 112 for four, Australia battled to contain a rampant Morkel, who landed a number of sickening body blows to the body, including one into the side of the helmet of Johnson.
Morkel claimed three wickets in the innings, but his two spells of fearsome shot-pitched deliveries had the Australian hopping around the crease.
David Warner was the top scorer for the tourists with 70, but as he looked to score at the opposite end to Morkel he edged Philander to Smith at first slip.
Steve Smith made 49 before he was controversially given out on review by TV umpire Aleem Dar, caught by De Villiers off Morkel.
There seemed little evidence to overturn the not verdict from on-field umpire Richard Illingworth.
Johnson made a brisk 27 but his blow to the head appeared to unsettle him and shortly afterwards he played all around a delivery from spinner JP Duminy and was bowled.
Ryan Harris (26) and Siddle (11 not out) put on 37 for the final wicket before the former edged Morkel to Du Plessis at second slip.
Australia won the first Test of the three-match series by 281 runs in Pretoria.