South African pace bowler Dale Steyn claimed five wickets as the visitors seized control on the third of the first Test against Sri Lanka on Friday.
Steyn finished with figures of 5-50, which was his 23rd five-wicket haul in Tests.
Sri Lanka were reduced to 283/9 as the hosts still trail the visitors by 172 runs with just one wicket in hand, Sport24 reported.
Sri Lankan skipper Angelo Mathews tried to set a little pace for his side with an 89-run knock before being bowled by leg-spinner Imran Tahir.
Mathews, who missed scoring his third Test century, also shared a 71-run with Rangana Herath for the eighth wicket, the highest partnership of the innings.
Two big hitters from Sri Lanka failed with the bat as Mahela Jayawardene and Kumar Sangakkara managed to score just three and 24 run respectively.
Steyn claimed the wickets of Kaushal Silva at eight, Lahiru Thirimanne at 38, Dinesh Chandimal at six, Dilruwan Perera, who went out on a duck, and Jayawardene at just three runs, the report added.