AB de Villiers completed a majestic century and had good support from the tail on Sunday as South Africa took a first innings lead of 139 in the second Test against Australia.
De Villiers made 126 not out before South Africa were all out for 382 shortly before the scheduled lunch break on the third day at St George's Park in Port Elizabeth.
Vernon Philander (36) and Keshav Maharaj (30) helped De Villiers add 84 for the eighth wicket and 58 for the ninth wicket as South Africa dominated a sunny morning.
Australia's fast bowlers, who had a heavy workload on the previous day, wilted under an assault in which De Villiers played some breathtaking strokes.
He hit 20 fours and a six in a 146-ball innings. It was his 22nd Test century and his sixth against Australia.
Philander played a solid innings, while Maharaj slammed two sixes and three fours off 24 balls.He appeared to have been caught when he hit his first six off Nathan Lyon but Usman Khawaja stepped over the midwicket boundary before tossing the ball back infield to complete the catch.
South Africa added 119 runs off 23.4 overs before a direct hit from Steve Smith in the covers ran out last man Lungi Ngidi at the bowler's end as the batsmen tried a risky second run to keep De Villiers on strike.