
Dean Elgar atoned for a near miss in Centurion last week by completing his 13th Test century on the second day of the second Test against Sri Lanka at the Wanderers on Monday, but some excellent bowling by the visitors undoubtedly stifled the Proteas' charge.
South Africa's reliable opener crafted a brilliant 127 before his dismissal sparked a major collapse in which nine wickets fell for just 84 runs.
While Dasun Shanaka, used as effectively as Wiaan Mulder as the Islanders' fourth seamer, was the man who set the wheels in motion, it was Vishwa Fernando who proved the most prolific performer.
The left-arm seamer was rewarded for his tireless efforts, grabbing a career-best 5/101 and clearly valuing his achievement by giving a loud roar when he completed his haul.
Due to his efforts, the Proteas were bowled out 302, a lead of 145.
Sri Lanka suffered a huge blow before tea though when Lungi Ngidi rocked the influential Kusal Perera's defences with a stunning delivery that jagged back sharply.
They'll resume on 16/1.
Elgar and Rassie van der Dussen dominated the opening hour, continuing to score at a brisk rate as they added a record 184.
The Sri Lankans' morning could've turned out distinctly more productive had Kusal Mendis managed to hold on to an edge from Van der Dussen on 44.
Instead, both men prospered with their stroke-play on the off-side.
The gritty Elgar (127) looked a tad stodgy approaching three figures before receiving a buffet ball from Vishwa that was easily muscled past point that allowed him to reach his landmark.
The magnitude of the left-hander's innings was put into perspective by the fact that it's the first century by a Proteas opener at home for 11 Tests, the previous being Aiden Markram's 152 against the Australians back in March 2018.
He settled back into his rhythm as runs continued to flow quite serenely, rendering his rather tame push outside off Dushmantha Chameera wholly unexpected.
Van der Dussen, who'd reached his half-century with a compact straight drive, was out the next over when he gloved an innocuous, leg-side bound long hop from Shanaka.
He was given not out, but the Sri Lankans were pretty united in being convinced about his dismissal and DRS confirmed it.
It was a frustrating turn of events for Van der Dussen, who looked primed to convert his 67 into an elusive first international century.
Shanaka then had Faf du Plessis (8) caught behind with a fine, fuller delivery.
Sri Lanka looked on fire when Vishwa's hint of away movement had Quinton de Kock (10) pushing at a delivery with some hard hands.
His run was halted by the lunch interval though it wasn't undermined as he mopped up the tail.