Acting captain Alastair Cook hit an unbeaten 158 on day one of the first Test to put the visitors in command against Bangladesh.
Cook had Paul Collinghood (32) with him as England finished the day on 374-3 after England were sent into bat after Bangladesh won the toss.
Earlier, Kevin Pietersen emerged from his slump to hit 99 before being bowled out by spinner Abdur Razzak in the third session. Pietersen had scored only 69 runs in seven innings on the tour.
Cook’s 158 came off 244 balls, including 14 boundaries and two sixes. Pietersen hit 15 boundaries and one six in his 135-ball knock before falling just short of his 17th test century.
It was the 11th test century for Cook, who is filling in as captain for Andrew Strauss, who has skipped the tour.
Debutant Michael Carberry (30) and Jonathan Trott (39) were the only two wickets England lost in the first two sessions.
Carberry was out lbw when he missed an attempted sweep off spinner Mahmudullah (1-45).
Trott was unlucky to be given out caught by Mushfiqur Rahim off a bouncer from Rubel Hossain. Replays showed the ball missed his bat and gloves and hit his helmet.
Bangladesh’s decision to send England in was made to appear curious when the hosts resorted to spin in just the eight over and used six bowlers in all, four of them spinners.
The hosts offered more surprises after captain Shakib Al Hasan called opening batsman Tamim Iqbal to bowl the day’s last over.
Carberry was one of two debutants in the England team, along with Middlesex paceman Steven Finn.
England is the only test-playing nation to have never lost to Bangladesh in any form of the game.