Sangakkara struck 109 as his side amassed 309 for seven in their 50 overs before the hosts, seeking their first-ever ODI series victory, fell short at 231 for nine.
Skipper Mahela Jayawardene (51) and Kaushal Lokuarachchi (69) added 75 and 104 respectively with Sangakkara as Sri Lanka put the game out of Bangladesh's reach.
The hosts' hopes were given an early lift when a double strike from Mashrafe Mortaza removed Sanath Jayasuriya and Upul Tharanga to leave Sri Lanka on 17 for 2.
But Sangakkara and Jayawardene steadied the boat with a solid stand before Jayawardene, who faced 56 balls and hit eight fours, was caught and bowled by Mohammad Rafique.
Lokuarachchi continued the momentum with three enormous sixes in his 57-ball cameo before he was bowled by Rafique.
Sangakkara reached his fifth One-day century when Rafique claimed his third victim as he ended the wicketkeeper's 125-ball vigil by knocking over his stumps.
Tillakaratne Dilshan (22), Farveez Maharoof (27no) and Chamara Kapugedera (16) added valuable late runs.
The Bangladeshi reply was always struggling after Dammika Prasad claimed the scalps of Shahriar Nafees (13) and Aftab Ahmed (0) in the space of two balls to reduce their reply to 29 for two.
Mohammad Ashraful struck a run-a-ball 64 and added 86 with skipper Habibul Bashar (30) before he became the first of two victims for Dilshan.
Lokuarachchi also weighed in with two wickets as Bangladesh slumped from the relatively promising 130-3 to 231 all out as Mortaza was caught off Malinga Bandara off the final ball of the innings.
Sri Lanka won the opening match of the series in Bogra on Monday before Bangladesh recorded a four-wicket win, only their 11th triumph in 117 One-day matches, in Wednesday's second match, also in Bogra.