South Africa were 187 for one at lunch, 198 runs behind England's first innings total of 385, with South Africa captain Smith unbeaten on 103.
Smith completed his 25th Test century two balls before the interval with a square cut for four off Tim Bresnan, his second successive boundary.
Smith and Hashim Amla (80 not out) have so far shared an unbeaten second wicket partnership of 186 after coming together in the third over of the innings on Friday.
The pair had to work hard in the first hour against the combination of fast bowler James Anderson and off-spinner Graeme Swann.
Left-handed opener Smith in particular struggled to score against Swann and was stuck on 48 for almost half an hour before working Swann to midwicket for three runs to raise the slowest half-century of his Test career.
It took Smith 160 balls to reach his fifty, which came in the last over before the mid-morning drinks break.
But the scoring rate picked up markedly, with Swann conceding 21 runs in two overs either side of drinks.
Smith raced to his century off 201 balls, hitting 16 fours, taking just 41 deliveries to notch his second half-century.
Amla had been the more fluent partner earlier in the morning and was the first to reach his fifty, off 110 balls.
By lunch he had faced 181 balls and hit nine fours. – Sapa-AFP