The 35-year-old left-hander surpassed his previous best of 138 not out against India in 2005 after the hosts were sent in to bat in the first game of the five-match series against the Proteas.
Sangakkara's 16th century in his 350th one-dayer steered Sri Lanka to a commanding total after Tillakaratne Dilshan had fallen cheaply in the fourth over, bowled by Chris Morris.
Sangakkara put on 70 for the second wicket with opener Upul Tharanga (43), 74 for the third with Mahela Jayawardene (42) and 123 for the fourth in which Lahiru Thirimanne's contribution was just 17.
Fast bowler Morne Morkel, who recovered in time from a thigh injury to play the match, was South Africa's most impressive bowler with 2-34 from his 10 overs.
More From This Section
But the inexperience of the depleted touring squad told in the end as the Sri Lankans batted fluently on the slow pitch.
South Africa are without three frontline players -- fast bowler Dale Steyn, all-rounder Jacques Kallis and former captain Graeme Smith -- for the tour which also includes three Twenty20 matches.