Tamim contributed 103 from 100 balls to a Bangladesh record first wicket partnership of 185 with Imrul Kayes (75) after his team had been asked to follow on.
Junaid Siddique and Jahurul Islam (46) consolidated with a composed third-wicket partnership of exactly 100 which enabled the visitors to reach 328 for five at the close, a lead of 105 with a day’s play remaining.
England should still wrap up the match comfortably today. but Bangladesh have proved thoroughly worthy opponents five years after losing their only other test at Lord’s by an innings and 261 runs within three days.
They have won just three of their previous 66 tests against weakened Zimbabwe and West Indies’ sides and lost all six against England.
Tamim reached his century from 94 balls, the fastest in tests by any Bangladesh batsman and the quickest at Lord’s since Indian Mohammad Azharuddin’s 87-ball hundred in 1990.
He was particularly severe on off-spinner Graeme Swann, England’s best bowler over the past two years, slog-sweeping two sixes and cover-driving a four from one over.
Inevitably with such an attacking approach, Tamim rode his luck, missing completely with several full-blooded drives.
But much of his shot-making was of the highest class, including a spectacular pull off one leg to record a third consecutive boundary off Steven Finn.
Threadbare
England
Kayes edged a James Anderson delivery between Swann’s hands after scoring 30 and was stalled for 15 balls on 49 before sweeping a four to reach his first test half-century.
He continued to play with great determination, belying a test average of 13.81, while Siddique, the top-scorer in the first innings with 58, batted with similar application.
With Swann struggling for once to make an impact, England’s four-man attack looked threadbare and Middlesex fast bowler Finn was again the pick.
He dismissed both openers in the space of 14 balls after failing to take the one wicket during Bangladesh’s first innings in the morning session which would have given him five in an innings on his Lord’s debut.
Instead, Anderson wrapped up the Bangladesh innings for 282 within the opening hour, clean-bowling two of his victims to finish with four for 78.
Anderson had to wait until near the end of the day for his next wicket, inducing Mohammad Ashraful (21) to nick a catch behind with the final ball of the first over with the second new ball. Tim Bresnan then bowled nightwatchman Shahadat Hossain for no score.