|Collingwood hit his 10th Test century [AFP]
Stuart Broad and Graeme Swann shared five wickets to put England in complete command on the second day of the first Test against Bangladesh.
At the close in Chittagong the hosts, replying to England's 599 for six declared, were struggling at 154 for five with only opener Tamin Iqbal standing firm.
Tamim was unbeaten on 81 after Paul Collingwood had collected his 10th Test century to lift England to a huge first-innings total.
Facing an uphill task to avoid the follow-on, Bangladesh suffered an early setback on Saturday when fast bowler Broad dismissed opener Imrul Kayes for four and Junaid Siddique for seven with short-pitched deliveries before Swann continued his remarkable record of capturing a wicket in his opening over.
Swann had Aftab Ahmed caught by Ian Bell at leg-slip for one to give the off-spinner a wicket with his fifth ball after the tea break and reduce Bangladesh to 51 for three.
Tamim then shared a 94-run partnership with Mahmudullah's 51 to repair the damage before Swann struck again.
Mahmudullah, who had raced to his fifty off 54 balls with seven cleanly struck boundaries and a six, attempted a sweep shot but managed only to glove the ball to Collingwood at slip.
Skipper Shakib Al Hasan survived some anxious moments before he was bowled by Swann for one, attempting to drive.
Benefit of the doubt
Swann could have added another wicket but nightwatchman Shahadat Hossain was given the benefit of the doubt by the third umpire when England appealed for a catch at silly point.
Collingwood, 32 not out overnight, punished the innocuous Bangladesh bowling with 145 from 188 balls.
He completed his century with a single off Shahadat and Ian Bell, his partner in the 184-run fifth wicket stand, drove the next ball to the cover boundary to bring up his fifty.
England first innings (o/n 374-3)
A Cook c & b Mahmudullah 173
M Carberry lbw b Mahmudullah 30
J Trott c Rahim b Rubel 39
K Pietersen b Razzak 99
P Collingwood c Iqbal b Razzak 145
I Bell c Hossain b Shakib 84
M Prior not out 0
Total (for 6) 599
Fow: 1-72 2-149 3-319 4-412 5-596 6-599
Bangladesh first innings
T Iqbal not out 81
I Kayes c Prior b Broad 4
Z Siddique c and b Broad 7
A Ahmed c Bell b Swann 1
Mahmudullah c Collingwood b Swann 51
S Hasan b Swann 1
S Hossain not out 0
Total (for 5) 154
Fow: 1-13 2-27 3-51 4-145 5-149
"This is a special century for me," Collingwood said.
"It is Test cricket and to get 10 centuries, it is something I thought I'd never achieve when I first started the game.
"I've not had a hundred for a little while, so I wanted to make sure I got there and it was a special one for me.
"I'm not going to rank it as the best or the worst or even the easiest, I think that is a little bit unfair.
"I don't want anything to be taken away from our performance and the way we've approached the game."
Collingwood, who hit 10 fours and four sixes, had one let-off when Shakib dropped a return catch when the batsman was on 119.
Wicketkeeper Mushfiqur Rahim fumbled a chance off Bell when he was on 64 off Razzak and he was again dropped by Rubel Hossain off Shakib.
Rubel made amends for his mistake with the next ball to catch Bell for 84 and Alastair Cook declared the innings immediately.
Earlier, Cook fell short of a double century when off-spinner Mahmudullah had him caught-and-bowled for 173.
Cook, resuming on 158 not out, eased past his previous Test-best score of 160 but an attempted pull caught the leading edge and Mahmudullah took a simple catch.
Cook struck 16 fours and two sixes in his 283-ball knock.
Bangladesh all-rounder Mahmudullah refused to give up hope.
"We have got some depth in our batting. Still Mushfiqur (Rahim) and Naeem (Islam) are to come. Tamim is still there. If we are able to bat properly we can achieve a good total," he said.