Mominul, who made 176 in the first innings, hit 105 off 174 balls as Bangladesh were 307-5 at stumps on the fifth and final day at the Zahur Ahmed Chowdhury Stadium in Chittagong.
Mominul and Liton Das, who made 94 to just fall just short of his maiden Test century, shared a crucial 180-run stand for the fourth wicket to frustrate the Sri Lankan bowlers.
It was Dhananjaya de Silva who broke their partnership, dismissing Mominul shortly after the left-hander brought his second century of the game with a single off Lakshan Sandakan.
Dimuth Karunaratne took the catch at slip to bring the curtains down on a fine innings, featuring five fours and two sixes.
Mominul had nicked a delivery from veteran spinner Rangana Herath on 89 but wicketkeeper Niroshan Dickewella failed to grab the low catch.
Liton also looked confident on the other side but his lavish attempt for a six to complete his century brought his downfall.
Dilruwan Perera ran backward from mid-off to take a fine catch off Herath as Liton departed after hitting 11 fours during his 182-ball stay.
Skipper Mahmudullah (12 not out) was at the crease during the break alongside Mosaddek Hossain who was yet to open his account.
Sri Lanka held a 200-run first innings lead after posting a mammoth 713-9 declared in reply to Bangladesh's 513.
They were hoping to carry their momentum to the final day after picking up a wicket off the last ball on Saturday when Herath removed Mushfiqur Rahim.
But Mominul, 18 not out overnight, batted with confidence, hitting a six straight over the head of left-arm spinner Herath in the fifth over.
A short ball from Lahiru Kumara struck Mominul on the helmet but he appeared unfazed and scored a single off the next ball, becoming the highest run scorer for Bangladesh in a single Test match.
Mominul, who reached 56 with the single, overtook Tamim Iqbal's aggregate of 231 runs against Pakistan in Khulna in 2015.
COMMENTS
Comments are moderated and generally will be posted if they are on-topic and not abusive.
For more information, please see our Comments FAQ