The stylish wicketkeeper-batsman struck 17 fours in his ninth Test hundred as the hosts reached 353-3 in their second innings at lunch on the fourth day for an overall lead of 362.
Thilan Samaraweera was the other not-out batsman at the break on 25. He has so far added 68 for the unfinished fourth wicket with Sangakkara, who was unbeaten on 77 in his team's overnight total of 242-2.
It was a frustrating morning for Pakistan, who could grab just one wicket with the second new ball. None of their bowlers were able to maintain the pressure on the Sri Lankan batsmen who added 111 in the extended session.
Seamer Mohammad Asif was the lone wicket-taker when he had stand-in skipper Mahela Jayawardene caught hooking by Abdul Razzaq in the deep after the batsman had added 13 to his overnight score of 69.
Jayawardene, who hit one six and 12 fours in his 139-ball knock, had already put his team in a strong position before his dismissal with a 158-run stand for the third wicket with left-handed Sangakkara.
There was no stopping Sangakkara, who hit seamer Razzaq for three successive fours before completing his century with a single.
The second and final Test will begin at Kandy on April 3.