Anrich Nortje was on fire after lunch for South Africa as he built on the fine work of Wiaan Mulder to dismiss Sri Lanka for just 157 on the first day of the second Test at the Wanderers on Sunday.
Nortje finished with career-best figures of six for 56 in 14.3 overs, improving on the five for 110 he took against England last summer in the previous Test at the Wanderers.
While the fast bowler struggled to get the ball full in the morning session, largely because Kusal Perera feasted on anything he could drive, he bowled a much better length after lunch and took five for 35 in 8.3 overs in the second session.
Mulder, who took three wickets for one run before lunch, also finished with career-best figures of three for 25.
Nortje got on top of the Sri Lankan lower order straight after the break as he had Niroshan Dickwella caught behind for 7 in his first over and then removed Dasun Shanaka for 4 in the same fashion two overs later.
Wanindu Hasaranga (29), continuing his impressive entry on to the Test stage, and Dushmantha Chameera (22) then briefly had the Proteas on the back foot as they added 39 for the eighth wicket. But Lutho Sipamla, brought on to replace Nortje at the Corlett Drive End, had Hasaranga caught behind with the first ball after drinks, and Nortje then switched ends and wrapped up the innings with the wickets of Chameera and Asitha Fernando (4) from the Golf Course End.
Proteas openers Dean Elgar (19*) and Aiden Markram (3*) then made an untroubled start to the reply, reaching 22 without loss at tea.
Elgar reached an impressive landmark during his innings, becoming the 10th South African batsman to score 4 000 Test runs, in his 65th match.
Proteas all-rounder Mulder was the star of the first morning as his burst of three wickets for one run sent the tourists crashing to 84 for five at lunch.
Sri Lanka had won the toss and elected to bat first in initially cloudy and cool conditions, and opener Kusal was the dominant figure as he bashed 60 of the first 71 runs (a Test record), facing just 67 deliveries and hitting 11 fours. The left-hander was difficult to bowl to because anything pitched up was dispatched through the covers with a flashing blade reminiscent of the great Sanath Jayasuriya.
But that was before Mulder joined the attack in the 19th over. The seamer removed Kusal with his seventh delivery, finding the perfect length to draw the batsman forward, reaching for a drive, as he swung the ball across him and the resulting edge was snaffled by Markram at third slip.
Four balls later, Mulder dismissed Kusal Mendis for a duck, the left-hander edging a wonderful away-swinger to first slip, and in his next over the 22-year-old seamer removed Lahiru Thirimanne (17), who tried to play another away-swinger too square on the leg side and was also caught in the slips.
Debutant Minod Bhanuka was dismissed with the last ball before lunch for five, edging an ambitious back-foot drive on the up off Nortje, which was neatly taken above his head by Rassie van der Dussen at first slip.
It completed a dramatic turnaround as the well-set Sri Lankans collapsed from 71 for one to 84 for five.
Earlier, while Kusal had set about the bowling from the outset, fellow opener and captain Dimuth Karunaratne struggled to get going. The left-hander (another one!) needed 24 balls to get off the mark and his struggles ended on 2 off 32 deliveries when he prodded at a short delivery from Nortje, edging behind to wicketkeeper Quinton de Kock.
For more news your way, download The Citizen’s app for iOS and Android.
Download our app and read this and other great stories on the move. Available for Android and iOS.