Sri Lanka offspinner Dilruwan Perera has completed a 10-wicket match haul as the hosts thumped South Africa by 278 runs inside three days to go 1-0 up in the first match of their two-Test series.
South Africa were all out for 73 in their second innings on Saturday, their lowest since their readmission to international cricket in 1992, in an abject batting capitulation.
It was also their lowest total in Sri Lanka, eclipsing the 126 they posted in the first innings on Friday.
Sri Lanka opener Dimuth Karunaratne, who returned to the side after missing the series in West Indies with injury, was named the player of the match for his first-innings 158 followed by 60 in the second.
Equally impressive was Perera, who followed up his first-innings figures of 4-46 with six for 32 in the second for his best bowling figures in tests.
Veteran left-arm spinner Rangana Herath picked up three wickets in the second innings.
"Every spinner likes to bowl in Galle. I get a lot of drift here," Perera said.
The Sri Lankan spinners took 17 of the 20 South African wickets to fall and the tourists will need to find a solution to their batting woes before the final match starting on Friday in Colombo.
"No matter how much you train before a series like this, you can't face the quality of spin you'll get in the Test match when you're playing in the nets," South Africa captain Faf du Plessis said after the match.
Sri Lanka were all out for 190 in their second innings, leaving South Africa a target of 352 on a surface providing lot of turn and bounce for the spinners.
Left-arm spinner Keshav Maharaj took 4-58 for the touring side.