The visitors’ captain was dismissed for 26 on the stroke of lunch on the third day‚ which Bangladesh‚ following on‚ reached on 92/4 — still 334 runs short of making South Africa bat again.
Mushfiqur was 11 not out when he ducked into a short delivery from Duanne Olivier in the 13th over of the day.
The ball crashed solidly into the side of his helmet‚ and he staggered away from his stumps before sinking to his knees and rolling onto his side.
Play was held up for several minutes while Mushfiqur received medical attention.
Among those in attendance was Mohammed Moosajee‚ South Africa’s team manager and a medical doctor.
South Africa team management said Moosajee advised Mushfiqur to leave the field but instead a replacement helmet was called for and he batted on.
In Wellington in January‚ Mushfiqur was stretchered off the field and hospitalised after being struck on the helmet by Neil Wagner‚ the climax of a battle with New Zealand’s bowlers in which he was hit 19 times in 80 minutes.
Mushfiqur’s brave innings was ended with what became the last ball before lunch‚ when he offered no stroke to Wayne Parnell and was trapped in front.
Mushfiqur faced 32 balls after he was hit.
Bangladesh‚ who followed on 426 runs behind‚ resumed on seven without loss and were reduced to 29/2 when Kagiso Rabada had Soumya Sarkar caught behind and Imrul Kayes taken at second slip.
That gave Rabada‚ who is already the highest wicket-taker in Test cricket this year‚ 99 career scalps.
Another strike in the match and he will become‚ at 22‚ the youngest bowler to claim 100 Test wickets for South Africa.
South Africa took the lead in the two-match series by winning the first Test in Potchefstroom by 333 runs.