Brett Maher added five field goals for the Tigers-Cats (2-2), who ended a two-game losing run. Boris Bede had two boots and a single for Montreal (1-2) before 20,098 at Percival Molson Stadium.
The East Division is collectively 8-0 on the road this season.
Rakeem Cato struggled in his first start of the season in place of injured Kevin Glenn, but it didn't help that receivers S.J. Green and Kenny Stafford and running back Tyrell Sutton were out with injuries. Rookie Vernon Adams Jr. took over in the fourth quarter.
Jeremiah Masoli was marginally better for Hamilton in his fourth start in place of Zach Collaros, who is off the injured list but wasn't dressed.
The Ticats led 5-4 at the intermission before pulling away in the third quarter.
A 40-yard Cato toss to Duron Carter helped set up Bede's 42-yard field goal 10:57 into the game and he added a single on a missed 43-yard attempt in the second quarter. Bede's fourth missed kick in three games matched his total for all of 2015, when he was 36 for 40.
Coach Jim Popp tried to challenge an unreviewable play and took a delay of game penalty that contributed to Bede conceding a safety with 50 seconds left in the half. Masoli moved the ball enough for Maher to kick a 56-yard field goal as time expired to put Hamilton ahead.
Finally, a touchdown came 3:47 into the second half when Banks went up the middle 86 yards on a punt return to score, his second straight game with a kick return TD.
Bede got a second chance after missing a boot from 41 yards due to an offside call and then was good from 36 at 9:44.
Adrian Tracy stripped the ball from Cato and Larry Dean recovered near midfield. A 29-yard play to Gable and a pair of Montreal penalties put the ball on the nine, where Gable ran it in on a carry up the middle at 12:10.
Maher tacked on boots of 39, 10, 42 and 44 yards in the fourth, the last two after Montreal turned the ball over on downs.
The Ticats play next Saturday at Edmonton. Montreal won't play until July 25 in Toronto, but then play again four days later at home against Saskatchewan.
The French national anthem, as well as O Canada, was played before the game in solidarity with the people of Nice, France, who were hit by a terrorist attack this week.