South Africa took another step closer to a series win over Sri Lanka with an authoritative performance across day three of the third and final Test at Newlands in Cape Town.

Faced with a flat pitch that had already yielded 580 runs on the back of Jacques Kallis' double-century and tons from Alviro Petersen and AB de Villiers, the home seamers knew full well that a tough tasked awaited them.

True to the form that skittled Australia for a mere 47 all out late last year and thumped their current opposition in the series opener, Dale Steyn and company delivered despite the general lack of assistance from the track.

It was Steyn who landed the initial blow with they key wicket of Sangakkara, who holed out to point off just the third ball of the day. With the in-form left-hander out relatively cheaply, South Africa sensed their window of opportunity - and duly grabbed it to have Sri Lanka lose their last eight wickets for a mere 90 runs.

There was an alarming regularity at which the visitors folded. All the hard work put in during their victory in Durban was promptly undone by a repeat of the same mediocrity they endured at Centurion. Suffice to say, triumph in the Kingsmead Test was a mere flash in the pan for a side otherwise heavily prone to defeat.

Steyn and a fit-again Vernon Philander wasted little time in resuming the partnership that rolled the Aussies at the same venue a couple of months ago, securing six scalps between them.

For Sri Lanka, it was again a feeling of unfulfilled potential, with Mahela Jayawardene's 30 and Dinesh Chandimal's 35 testament to the stifled promise.

Sitting pretty with a monstrous 341-run lead, Graeme Smith had no hesitation in enforcing the follow-on. With the pitch proving progressively flat, the Proteas skipper was demanding a lot from his fast bowlers.

Regardless, they again stepped up, with Imran Tahir too enjoying his day in the sun. Holding his own in the first innings, the spinner proved a formidable force a second time around, with his removal of Sangakkara testament to his impact on proceedings.

Sri Lanka lost skipper Tillakaratne Dilshan early, after which Lahiru Thirimanne dug in with some resistance before he was caught at short-leg, but only after a review by South Africa proved that there was, indeed, bat involved in a shot the on-field umpire thought brought only thigh pad. Earlier afforded a lifeline by Mark Boucher, who dropped an absolute sitter, Thirimanne's run of fortune was over.

With both openers back in the hut, Sangakkara - the seasoned campaigner that he is - walked to the crease with a look of unrelenting determination on his face. A failure in the first innings, the former captain insisted on a big knock across his second chance.

His adamant approach brought him a flourishing 34 runs, only for Tahir to end it with a bit of rip from the footmarks outside the left-hander's off-stump. Kallis completed the job with a sharp catch in the slips. Sangakkara's departure - and the dismissal of the desperately short-of-form Mahela Jayawardene shortly thereafter - left the tourists four down and the home side chasing victory inside three days.

Thilan Samaraweera and Angelo Mathews, however, knuckled in for the long haul, both riding their luck off the outside edge and displaying true grit with sound defence, through to the close of play. While their rearguard stand was a job well done, and at least pushed the contest into a fourth day, the duo need to orchestrate a monumental effort on Friday if Sri Lanka are to avoid a big defeat.

One can't really see the Proteas attack struggling to take the last six wickets. If ever the pitch has offered assistance, it's in the morning session when conditions are fittingly fresh.