Sri Lanka fight back as South Africa collapse again