Debutant Stephen Cook's maiden hundred and Hashim Amla's 25th century propelled South Africa to a healthy 329-5 on day one of the fourth Test against England, at Centurion.
Cook (115) became the sixth South African and 100th in Test history to notch a ton on debut as he compiled a second-wicket stand of 202 with Amla, whose 109 featured 19 fours.
Both batsmen were dropped - Amla by Alastair Cook on five and Cook on 47 by Jonny Bairstow - as England, having already won the Basil D'Oliveira trophy, struggled to settle before rallying after tea.
England twice picked up a couple of wickets in quick succession as South Africa slipped from 237-1 to 238-3, and then 271-3 to 273-5, before Temba Bavuma (32no) and Quinton de Kock (25no) countered with a flurry of late fours.
Cook, son of former opener Jimmy, replaced Stiaan van Zyl at the top of the order in one of five South African changes - the opener jilted just over a year after he began his career with a debut hundred on the same ground, against West Indies in December 2004.
Cook was quickly into his stride after the hosts won the toss; the 33-year-old struck his first ball in Test cricket for four as James Anderson strayed onto leg-stump and added 35 for the first wicket with Dean Elgar (20) before his fellow opener fell to Moeen Ali's fourth ball of the day thanks to superb James Taylor catch at short leg.
Taylor tracked to his right as Elgar advanced down the track and was in position to deflect the ball into his lap; unable to grasp the chance with his hands, he prevented the ball from hitting the turf by squeezing it between his legs.
It was Taylor's third stunning catch in two days of Test cricket, having clung onto sharp chances to remove Hashim Amla and Dane Vilas on day three of England's third Test win.
England might have had a second wicket in the session but skipper Cook - perhaps put off by Bairstow's dive - failed to hang onto a low chance at slip when Amla edged Ben Stokes' fourth ball.
Cook's reprieve came in the third over after lunch when Bairstow failed to grasp a low catch to his right, the opener subsequently reaching his fifty off 97 balls with eight fours.
Amla reached his 29th Test fifty in style, stroking his 68th ball for his 10th four of the innings, becoming the third batsman to score over 1,000 Test runs at Centurion in his 13th innings - behind AB de Villiers (1267) and Jacques Kallis - when he reached 62.
The 32-year-old followed up his double ton in Cape Town by reaching his century off 131 balls with 18 fours.
With well-organised Cook consistently strong through the leg-side and Amla driving fluently, England's hopes of a breakthrough looked slim. There was some respite came after tea when play was held up for 10 minutes because of a burst pipe on the edge of the square but it was only brief, the pair bringing up their 200-run stand off 311 balls.
Persistence finally paid off for Stokes when Amla inside-edged into his stumps and just one run later AB de Villiers - who pre-Test said "some of the guys in England's attack have lost some pace over the years" - snicked Broad to Joe Root at second slip.
It was the South Africa skipper's second successive duck and the 10th time that Broad has dismissed him in the 14 innings they've contested.
After inching his way through the nineties, Cook brought up his hundred with two through mid-wicket off Stokes one ball after surviving a tight lbw shout - replays showing the ball clipping leg but the decision staying with the umpire's 'not out' call.
When he reached 104, Cook surpassed the total number of runs scored by his namesake Alastair Cook in the series so far - the England skipper having struggled to 103 runs at an average of 17.
His 218-ball innings ended with a moment of indecision - Cook thinking about leaving but then chopping Woakes onto his stumps on the drive.
England sniffed an opening and JP Duminy - preferred to Faf du Plessis, who struck 110 not out against Australia on his Test debut in Adelaide in 2012 - provided it, falling lbw to Moeen as he heaved across the line.
Watch highlights of the opening day of the fourth Test on Sky Sports 2 from 6.30pm, then don't miss The Verdict from 7.30pm on the same channel.
Our day two live blog begins at 7.45am on Saturday with live coverage commencing on Sky Sports 2 at 8am.