Sri Lanka suffered a dramatic meltdown, as they were bowled out for 42, the lowest Test total at Kingsmead, in just 13.5 overs to hand South Africa a 149-run lead on Thursday.