Stand-in-skipper Suranga Lakmal and Dilruwan Perera starred as Sri Lanka skittled South Africa for just 126 on Friday -- their lowest Test innings in the country, leaving them 161 runs behind on day two.
The visitors' batting fell apart against the spinners while responding to Sri Lanka's 287 in the first Test in Galle. Skipper Faf du Plessis top-scored with 49 before the South African innings folded in the second session.
The dismal effort set a new low for South Africa in Sri Lanka, worse than their 169 at the SSC in 2006.
At tea, Sri Lanka were 25 for no loss in their second innings to lead by 186 runs. Openers Danushka Gunathilaka, on 10, and first-innings centurion Dimuth Karunaratne, on 15, were batting at the break.
But it was the spinners and Lakmal's late pace burst that put the hosts on top in the fast-paced five-day contest.
Perera, who took three wickets in the morning session with his off-spin, who stood out for the hosts with impressive figures of 4-46 from his 23 overs, while Lakmal picked up three including the prized scalp of du Plessis.
The 64-run seventh-wicket partnership between du Plessis and Vernon Philander, who made 18, was the best that South Africa could muster in their 54.3 overs.
Veteran Rangana Herath grabbed two wickets while left-arm wrist spinner Lakshan Sandakan claimed one -- the three spinners sharing seven wickets in total.
Lakmal did not bowl at all until the 37th over of the innings, but was effective after lunch on day two, rattling the off-stump of du Plessis with a delivery that jagged in sharply.
Lakmal then quickly got rid of the number nine and 10 batsmen to end the innnings with figures of 3-21 from only 4.3 overs.
On Thursday, opener Dimuth Karunaratne gave Sri Lanka a fighting total with his unbeaten 158 after the hosts elected to bat first at the start of the two-match series.
(This story has not been edited by Business Standard staff and is auto-generated from a syndicated feed.)