Cook’s 11th test century made the hosts regret their decision to bowl first and he had reached 158 not at the close with Paul Collingwood unbeaten on 32.
Former skipper Kevin Pietersen was out for 99 after adding 170 runs with Cook for the third wicket.
Cook, quiet initially, grew in confidence to hit 14 boundaries and smash off-spinner Mahmudullah over long on for the second of his two sixes to reach three figures.
His opening partner, debutant Michael Carberry, was first out for 30, unable to cope with the spin of Mahmudullah.
The left-hander had clubbed six fours, including three in one over from seamer Rubel Hossain, but was dropped by wicketkeeper Mushfiqur Rahim for 30 off Mahmudullah before being trapped lbw in the spinner’s next over.
Jonathan Trott was next to go when he was caught behind for 39, replays suggesting the short-pitched ball from Rubel struck him on the helmet before flying through to wicketkeeper Rahim.
COVER BOUNDARY
Bangladesh brought their fielders around the bat for the struggling Pietersen, but he showed no sign of nerves and drove left-arm spinner Abdur Razzak for a cover boundary to get off the mark.
He struck Shakib Al Hasan for a six and two fours in four balls to move into the 90s before his weakness against left-arm spin resurfaced and Razzak bowled him with the right-hander one run short of his 17th test century.
“Probably at the end of your career you look back and think one run could have made a difference to me personally, but for the team 99 was very important,” Pietersen told reporters.
“One run is really insignificant, though it may not look it on the scoreboard and I’d have taken 99 this morning that’s for sure,” Pietersen said.
“You don’t like getting out for 99. I’ve had a 99, I’ve had a 97, I’ve had a 96, I’ve had a 92…yeah, it’s not nice. But I can tell you getting out for 20 the other day wasn’t nice, getting out for one in the one-day series wasn’t nice. It’s never nice getting out,” said Pietersen.
Bangladesh coach Jamie Siddons said his side were now virtually out of the match.
“I don’t think two teams can win the game from here, I think we are pretty much nearly out of the game, unless we bowl terrifically in the morning, and then we have to bat the house down,” he said.
“We’ve probably put ourselves out of the game which we tend to do a lot in the first day or first session of a game. Our two fast bowlers bowled really poorly and let the team down and our two spinners didn’t put the ball in the right areas. It’s been a difficult day,” Siddons added.
Scoreboard
England first innings
A. Cook not out 158
M. Carberry lbw b Mahmudullah 30
J. Trott c Rahim b Rubel 39
K. Pietersen b Razzak 99
P. Collingwood not out 32
Extras (b-4 lb-3 w-2 nb-7) 16
Total (three wickets; 90 overs) 374
Fall of wickets: 1-72 2-149 3-319
To bat: I. Bell, M. Prior, S. Broad, G. Swann, T. Bresnan, S. Finn.
Bowling: Shahadat 12-2-50-0 (w-2 nb-2), Rubel 13-0-79-1 (nb-5), Shakib 21-2-80-0, Naeem, 11-1-38-0, Mahmudullah 14-1-45-1, Razzak 17-1-71-1, Aftab 1-0-2-0, Tamim 1-0-2-0