Ian Bell struck the 10th Test century of his career as England established a slender 21-run lead over Bangladesh at stumps on day three of the second Test.
Bell, 25 overnight, put in an assured display over two-and-a-half energy-sapping sessions for 138 of England's 440 for eight.
Tim Bresnan, who shared a 143-run stand with Bell, laboured for 214 deliveries to reach 74 not out in only his second Test innings.
Bangladesh, who posted 419, had harboured genuine hopes of a workable lead of their own when Jonathan Trott fell for 64 in the third over of the day.
But two clear umpiring mistakes went against them - as well as a handful of marginal calls - before three wickets in the final session raised their spirits.
Having sent down 15 maidens yesterday, it was no surprise to see Shakib Al Hasan open for Bangladesh. The decision paid dividends almost immediately, with the spinner striking in his second visit to the crease.
Having stoically faced 187 deliveries on day two, Trott was out off his eighth ball of the morning, bowled after a ricochet off pad and elbow.
That left England on 174 for four - still 245 behind and doubtless pondering their decision to sacrifice Michael Carberry for an extra bowler at the start of the match.
In the absence of a sixth specialist batsman, Prior was in at six and was fortunate not to be given lbw after Rubel Hossain found some late reverse swing.
The wicketkeeper was soon into his stride, though, and began scoring freely after the introduction of the new ball.
Bell also used the harder ball to his advantage, collecting 10 of Abdur Razzak's first over with it.
Prior took 10 more off Shafiul Islam as the Tigers started to toss up some loose deliveries.
Shakib attempted to stop a drive with his boot and ended up raking his studs along the ball - a similar act to that which caused Stuart Broad problems in South Africa - though he escaped censure from the umpires.
Prior was looking in wonderful touch and moved to 62, overtaking Bell in the process, by thrashing successive full-tosses to the ropes.
But he lost his composure attempting a third, dancing down the track to Shakib but missing one that turned and losing middle stump.
He could have taken his fourth wicket moments after lunch but was aggrieved to see Bresnan reprieved by umpire Rod Tucker after what looked a good bat-pad catch.
England posted 300 with a leg bye off Razzak and Bell lifted the same bowler for six down the ground.
Bangladesh had lbw appeals turned down against both batsmen, with Shakib frustrated and Siddons becoming increasingly animated on the sidelines.
In his three previous Test appearances Bresnan had batted only once, making nine, but he batted compactly after his initial scares.
Bell, meanwhile, lingered in the late nineties for several overs before steering Rubel beyond point to bring up his century with his 11th boundary.
He was dropped by Imrul Kayes off Shafiul as his concentration briefly wavered after tea and the hosts now looked discernibly downcast.
Bresnan slowed up as he approached his maiden 50, but brought up the landmark in fitting fashion by punching Shakib back over his head for four.
The Yorkshireman hooked Shafiul to the mid-wicket ropes to bring up the England 400.
England were four away from parity when Bell holed out trying to speed the game along after a period of slow scoring.
For Shakib it represented a fourth wicket and apt reward for a tireless innings' work that totalled 57 overs and 27 maidens at the close.
Bresnan nudged three runs off his pads to draw the scores level and Graeme Swann clipped a full toss for two to put the tourists ahead.
The 30-year-old made just six before being unluckily run out at the non-striker's end, Shakib deflecting a Bresnan drive on to the stumps.
Stuart Broad then added only three before Mahmudullah dismissed him lbw before the close.
Join our new commenting forum
Join thought-provoking conversations, follow other Independent readers and see their replies