Hafeez struck 224 off 332 balls as Pakistan, resuming on 227-1 in reply to Bangladesh's first innings total of 332, wiped out the deficit by lunch before stretching lead with five of their top seven batsmen crossing the 50-mark.
Asad Shafiq and Sarfraz Ahmed were unbeaten on 51 each at stumps with the visitors 205 runs ahead and looking in full control with five wickets in hand at the Sheikh Abu Naser Stadium.
Resuming on his overnight score of 137, Hafeez continued punishing the Bangladesh bowlers and he slowed down only after reaching 190.
He drove Mohammad Shahid for a boundary to reach 198 but could not score off the next 11 balls. He reached the mark against Taijul Islam, scampering for two before taking off his helmet and kissing the turf in a restrained celebration.
Hafeez, who fell three runs short of the 200-mark against New Zealand at Sharjah in November, added 227 runs for the second wicket with Azhar Ali (83) who was bowled by off-spinner Shuvagata Hom.
Next man in Younus Khan (33) was also looking good but was beaten by a Taijul delivery which spun past his bat and hit the top of his off-stump.
Hafeez fell to a soft dismissal after hitting 23 boundaries and three sixes, fluffing his sweep shot and gloving a poor down-the-leg delivery from Shuvagata to the leg-slip fielder.
Pakistan skipper Misbah-ul-Haq (59) opened his account hitting Taijul for a six and went on to bring up his 27th test fifty before becoming the left-arm spinner's third victim in the match. – Reuters
Original source: Hafeez scores maiden double ton