Tillakaratne Dilshan cracked a quick-fire 125 to help Sri Lanka post a challenging 302-9 in the third and final one-day international against Bangladesh in Pallekele on Thursday.
The in-form opener, who made an unbeaten 113 in the first match, hit 12 fours in a 128-ball knock for his 16th one-day hundred to boost his team's hopes of clinching the series.
Sri Lanka lead 1-0 in the series following their eight-wicket victory in the opening match in Hambantota. The second one-dayer at the same venue was abandoned due to rain.
Dilshan, who reached his century with a single off left-arm spinner Abdur Razzak, was the seventh man out, caught by Nasir Hossain at mid-wicket off paceman Shahadat Hossain in the 47th over.
Razzak, who removed Nuwan Kulasekara and Sachithra Senanayake off successive balls in his last over, finished with 5-62, his fourth five-wicket haul. He also completed 200 wickets in one-day internationals.
Sri Lanka were reduced to 263-7 before Lahiru Thirimanne smashed a 15-ball 25 not out late in the innings to help his side cross the 300-mark.
The hosts got off to a solid start after electing to bat in the day-night match as Dilshan and Kusal Perera (56) added 116 for the opening wicket.
Dilshan consolidated Sri Lanka's position when he put on 87 for the next wicket with Kumar Sangakkara (48), who completed 11,000 one-day runs during his 49-ball knock.
Sangakkara fell in the 36th over, caught by Anamul Haque at mid-wicket off Razzak after hitting five fours.
Left-handed Perera, 22, started impressively as he lofted Shahadat over long-on for the first six of the match and then hit the same bowler for three fours in an over.
Playing his seventh one-dayer, Perera fell after completing his maiden half-century as he was caught by Nasir at point while attempting to cut off-spinner Mohammad Mahmudullah.
Perera hit one six and five fours in his brisk 66-ball knock.