Hasan, who is only 20 and has played just six first-class games, smashed 13 fours and three sixes to bring up the milestone in just 106 balls.
He shared an unbroken 172-run partnership with Mahmudullah (72 not out) as the hosts reached 365 for eight at stumps.
Hasan was eventually dismissed for 113 on the second day, which was enough to usurp Pat Symcox's innings of 108 in 1998 but just four runs short of reaching the highest total ever by a number 10 - a 128-year-old record held by England's Walter Read.
"My first aim was to give support to Riyad Bhai (Mahmudullah). It all happened after I got my 50," Abul said.
"I thought of a century only after I crossed the 70-run mark," added Abul, who came in the side as a replacement for pace bowler Shahadat Hossain.
"When I went for batting I considered myself as a batsman and that's it."
After Bangladesh won the toss and chose to bat, Fidel Edwards took three wickets and captain Darren Sammy picked up two as the hosts stuttered to 186 for six at tea.
Edwards then picked up two more victims quickly after the adjournment to collect his 11th five wicket haul in Test cricket before the remarkable partnership in a final session that saw 179 runs scored in 32 overs.
West Indies were completely in control when Edwards dismissed Mushfiqur Rahim (38) and Sohag Gazi (0) in the same over.
Edwards started with the wicket of Nazimuddin (five) before Sammy removed Shahriar Nafees (26) and Tamim Iqbal (32) as Bangladesh went to lunch on 88-3.
Naeem Islam was then bowled by Edwards for 16 and Shakib Al Hasan (17) edged a catch to wicketkeeper Denesh Ramdin before Nasir Hossain and Mushfiq led a brief recovery.
Nasir made 52 off 88 balls, his second fifty in the series, which ended with a catch by Edwards at mid-on off Veerasammy Permaul.
Abul, who had scored only one half-century in his first-class career, was given a life on 42 when Kieran Pollard dropped a chance off Permaul.
He smashed Sammy for a four and a six to complete his fifty off 55 balls. Two runs off a Sunil Narine delivery brought up his century, which made him only the third Bangladeshi to reach three figures on debut after Aminul Islam and Mohammad Ashraful.
West Indies lead the two-Test series 1-0.
Centuries by number 10 batsmen in Test cricket history:
WW Read (Eng) 117 v Australia at The Oval in 1884
Abul Hasan (Bangladesh) 113 v West Indies in Khulna in 2012
PL Symcox (SA) 108 v Pakistan in Johannesburg in 1997-98
RA Duff (Aus) 104 v England in Melbourne in 1901-02
Highest partnership for the ninth wicket in Test cricket history:
MV Boucher/PL Symcox (SA) 195 v Pakistan in Johannesburg in 1998
Asif Iqbal/Intikhab Alam (Pak) 190 v England at The Oval in 1967
JP Duminy/DW Steyn (SA) 180 v Australia in Melbourne in 2008