West Indies started the second Test 167 runs behind Bangladesh and finished it 106 runs ahead, at the Daren Sammy Stadium on Saturday.
In reply to Bangladesh’s sub-par 234, West Indies moved from 67 without loss overnight to 340 for 5 at stumps.
West Indies, who won the Antigua Test in just over three days, were well on course to clinch the short series.
Brathwaite and Campbell, from a shared 67 overnight, reached 100 together in the first hour, including a seven-ball over by Shoriful Islam.
But Shoriful ended the partnership when he nicked Campbell’s glove and dismissed him for 45.
Brathwaite brought up his 27th Test fifty from 105 balls, but added only one more run when he missed offspinner Mehidy Hasan Miraz and was bowled.
In the next over, Khaled Ahmed got Raymon Reifer and Nkrumah Bonner to play on to their stumps.
Three wickets in two overs energised Bangladesh and sent a warning call to West Indies, but Mayers and Blackwood conceded nothing else before and after lunch. Blackwood played an anchor role, and Mayers gradually opened up to reach his fifty off 75 balls.
Their partnership was worth 116 just after tea when Blackwood misread Mehidy and was out leg before on 40 from 121 balls.
Mayers turned cautious again, but even after Bangladesh took the new ball, the batter switched to fearless mode when another milestone was in sight.
Mayers was in and out of the 90s in the space of six balls, bringing up his century with a six by pulling Shoriful into the stands over square leg. His second century in his 13th Test came from 150 balls.
By stumps, he was on 126 after 180 balls, a large proportion driven through the covers, with more great support from wicketkeeper Da Silva. Their stand was on 92 from 33 overs.