Marco Jansen's career-best 7/13 helped South Africa bowl Sri Lanka out for a record-low 42, marking the third-best figures by a South African pacer at home.