Tim Raines and Al Oliver had run-scoring singles and Andre Dawson hit a home run and a sacrifice fly as host Montreal handed Chicago its sixth straight loss.
Steve Rogers (10-3) struck out six and walked none before yielding two singles in the ninth. Dan Schatzeder came on with one out in the ninth and gave up a single by Bill Buckner, loading the bases. Schatzeder was relieved by Jeff Reardon.
Jay Johnstone made it 4-3 by driving in a run with a ground out, but Reardon struck out Jerry Morales, earning his 12th game.
After the game, the Cubs announced the signing of pitcher Rick Reuschel, 34, to a minor league contract with the Quad Cities Cubs of the Midwest League.
The flight bringing the Cubs to Montreal from Pittsburgh took only 70 minutes early yesterday, thus avoiding a possible boycott of the afternoon game with the Expos.
"The flight took an hour and 10 minutes," said the Cubs' Bob Ibach. "If it had been longer than an hour and a half, the game would have had to be played after 6 (p.m. EDT)."
Collective-bargaining terms say a team cannot play a day game after a night game in a city more than 1 1/2 hours flying time away.