Sangakkara's 16th ODI century steered Sri Lanka to 320 for 5 after it was sent in to bat. South Africa was then shot out for 140, the innings lasting just 31.5 overs, to leave Sri Lanka with a 1-0 lead in the five-match series.
Sangakkara chipped in with two catches and a stumping, earning him the Man of the Match award, as Rangana Herath and Thisara Perera picked up three wickets each.
Sangakkara celebrated his 350th one-day match by surpassing his previous best of 138 not out, against India in 2005, after Tillakaratne Dilshan fell cheaply in the fourth over. Sangakkara put on 70 for the second wicket with Upul Tharanga (43), 74 for the third with Mahela Jayawardena (42) and 123 for the fourth in which Lahiru Thirimanne's contribution was just 17. He finally holed out in the deep in the penultimate over of the innings, after 18 boundaries and six sixes.