Ahmedabad: Nov 16, 2012
The pair made a record fourth-wicket stand of 167 to help the home team close the third day on 455-6, just 72 shy of the visitors' imposing first innings total of 527-4 declared.
Islam, whose previous Test best was 59 not out against England in Dhaka in 2010, added another 76 runs for the fifth wicket with Mushfiqur Rahim (43) to end West Indies's hopes of enforcing the follow-on.
The West Indian bowlers laboured for wickets as the home team had done on the first two days.
Paceman Ravi Rampaul has been the pick of the attack with three wickets for 101 runs. Skipper Darren Sammy has two wickets and debutant spinner Veerasammy Permaul one.
Spinner Sunil Narine has failed to translate his Twenty20 success into the longer form of the game, conceding 89 runs in his 21 wicketless overs.
Islam finally lost concentration after tea, caught behind from a tired shot off Sammy's bowling. His 108 included 17 boundaries and lasted 255 balls.
In the morning session Shakib provided the aggression while Islam proved a rock at the other end as they added 88 runs before lunch.
Shakib, who hit 10 fours and a six in his 143-ball innings, was dismissed by Rampaul for 89 soon after lunch.
He failed to keep a drive down and was caught in the covers, showing great disappointment at missing out on a well-deserved hundred.
His stand with Islam was the best fourth-wicket partnership for Bangladesh in all Tests, topping the 120 by Habibul Bashar and Manjural Islam against the West Indies at Kingston in 2004.
Naeem reached his first Test century with a four to fine leg off paceman Tino Best.
Captain Mushfiqur Rahim also gave a gutsy performance, hitting seven fours and a six in his 43 before giving Permaul a return catch for his first Test wicket.
The second and final Test will be in Khulna from November 21.
(With inputs from AFP)
Brief Scores: West Indies 527 & 8 for no loss (Chris Gayle 7*, Kieran Powell 1; Sohag Gazi 0 for 1) trail Bangladesh 556 all-out (Naeem Islam 108, Nasir Hossain 96, Shakib Al Hasan 89; Ravi Rampaul 3 for 101) by 21 runs.