Gayle and Shivnarine Chanderpaul kept the home side in charge despite the former falling shortly after scoring his century.
West Indies, looking to add to their nine-wicket win in Bridgetown in the two-Test series, reached lunch on 201 for four, with Chanderpaul on course for a half-century.
After bowling Zimbabwe out for 175 on day one and resuming on 114 for two, the home side got off to the worst possible start as Marlon Samuels (26) was bowled first ball by a Tendai Chatara yorker.
But from there Gayle, unbeaten on 61 at the start of play, and Chanderpaul took control.
Gayle got to his century in style, hitting successive sixes off Prosper Utseya and then claiming a single to reach his hundred.
But the big-hitting opener added only one more run to his total before being dismissed when Utseya returned two overs later, the left-hander slicing the ball to long-off where Kyle Jarvis took a difficult catch.
Gayle, whose 101 came off 145 balls and included 12 fours and four sixes, had put on 67 for the fourth wicket with Chanderpaul, leaving the home side six runs in front.
Chanderpaul (40) and Denesh Ramdin (four) were unbeaten at the break.