But as good as the Chicago's pitchers have been at times this season, backing it up with offense continues to plague the team.
Bour's solo home run in the sixth inning off Hammel snapped a 1-1 tie. That spelled the difference for Koehler (7-4), who allowed five hits and an earned run in his six innings while striking out four and walking one.
For Hammel (5-4), who nearly matched Koehler's effectiveness, watching the two home runs leave the park stung.
"The two mistakes you have in the game end up leaving the yard and costing the team a game," he said.
Hammel retired 14 straight hitters in the middle innings before Bour's winning homer barely cleared the right field fence and dropped into the basket in front of the bleachers.
Hammel allowed only four hits - including the two homers - in seven innings while striking out five and walking one. But the Cubs offense, which hasn't scored more than two runs in eight of Chicago's last nine games, couldn't back up Hammel.
"We pitched great," Cubs manager Joe Maddon said. "We have not been scoring a lot of runs but we've been playing well."
The Marlins bullpen recorded three scoreless innings to protect the one-run lead. A.J. Ramos pitched the ninth to earn his 13th save in 16 opportunities.
"It was a solid team win today and we've been playing really good baseball," Koehler said. "Hopefully, it's something that will continue."
Yelich gave the Marlins a 1-0 lead in the first inning with a one-out solo home run. The Cubs, who saw their three-game winning streak snapped, responded quickly, tying the game in their first at-bat. Miguel Montero's RBI single scored Kris Bryant, who doubled to left field with two outs.
But after tying the game, the Cubs couldn't push any more runs across the plate, collecting only one hit after the fifth inning. Still, Maddon likes the effort.
"That's the game we play right there. If you come to the old ballpark, expect it," Maddon said. "It's going to be close right down to the very end. Our guys hung in there very well."
SS Starlin Castro wasn't in Chicago's starting lineup on Friday, replaced by Addison Russell. Castro entered the game in the ninth inning as a pinch-hitter and grounded out. The day off for Castro follows rest days for third baseman Kris Bryant and Russell. Manager Joe Maddon said he isn't as worried about first baseman Anthony Rizzo given the nature of his position. "You can't run your guys into the ground," Maddon said. "I don't care what the birth certificate says."
Marlins: 1B Michael Morse (right finger sprain) tweaked a back muscle and made a minor league rehab start on Friday. Manager Dan Jennings said Morse could join the Marlins during their weekend visit to Chicago. ... RHP Jarred Cosart will return to Miami's starting rotation on Saturday after missing a month with vertigo. Cosart made a relief appearance on June 26 against the Dodgers when he allowed two earned runs and six hits in four innings.
Cubs: Manager Joe Maddon said OF Jorge Soler (left ankle) could be back "soon" and was hoping to play nine innings for Triple-A Iowa on Friday. ... President Theo Epstein said the immigration issues that have kept RHP Rafael Soriano in the Dominican Republic are past him, and that he should join one of the club's minor league affiliates following a brief time at Mesa, Arizona.
Marlins: RHP Jarred Cosart (1-3) will make his first start after missing a month with vertigo against the Cubs and LHP Clayton Richard (0-0), who was acquired in a trade Friday from the Pittsburgh Pirates and hasn't pitched in the major leagues since 2013 with San Diego.