Dale Steyn bowled with great intensity and control to pick up three wickets before lunch and put South Africa in control of the third and deciding test against Sri Lanka at Newlands on Thursday.
Steyn, sticking to a wonderful line just outside off stump and moving the ball away at high pace, took three for 16 in eight overs on the third morning as Sri Lanka's ill-equipped batsmen slumped to 219 for seven at the interval.
Sri Lanka, replying to South Africa's massive first innings of 580 for four declared, lost five wickets for 70 runs after resuming their first innings on 149 for two.
Steyn started the rot when he removed Kumar Sangakkara, who drove lazily to Hashim Amla at point, for 35 with the third ball of the day.
Vernon Philander, who may have taken more wickets with a bit more fortune, then found the edge of Thilan Samaraweera's bat as the veteran prodded at another fine delivery that nipped away from back-of-a-length outside off stump. Jacques Kallis took a low catch at second slip and Samaraweera was out for 11.
Steyn, who did not stray from his exemplary line all morning, then returned half an hour before lunch and Mahela Jayawardene (30) was not able to resist pushing firmly at a delivery outside off stump, edging another catch to Kallis at second slip.
Angelo Mathews did not trouble Steyn for long, making just a single before he dabbed at an away-swinger and wicketkeeper Mark Boucher took a good catch diving forward.
Imran Tahir then pushed a big-turning leg-break through Thisara Perera's defences to bowl him for five with what became the last ball before lunch.
South Africa won the first test at Centurion by an innings and 81 runs and Sri Lanka triumphed by 208 runs in the second match in Durban.