Following Koehler's single and a Chris Coghlan flyout, Donovan Solano singled to put two on and one out for Christian Yelich, who doubled to left-center to plate Koehler and give the Marlins a 1-0 lead.
Giancarlo Stanton followed with an RBI single to left to score Solano. Justin Ruggiano hit a ground ball to short that Starlin Castro couldn't field cleanly, allowing another run to score, making it 3-0.
"It was a big inning," Koehler said. "Anytime you can contribute at all offensively, it's a real big plus. Our main goal is to get the bunts down, but if you can do something other than that, and find some way to contribute, it helps out the team. You ... put a little pressure on the other team, and good things happen."
Cubs starter Edwin Jackson said he threw too many sliders, which contributed to his struggles in the fifth inning.
"At the end of the day, it's on me," Jackson said. "There's nobody to blame but myself. ... I just could've done a better job, like I did early in the game pitching off the fastball. The slider is no good unless you pitch off the fastball with it."
The Marlins tacked on three more in the eighth, thanks to a two-out, two-run double by Solano followed by an RBI single by Yelich that made it 6-2.
Solano tied career highs with three hits and two doubles, and had two RBIs on the night.
Yelich is now 6-for-9 with three RBIs in the series. The rookie is hitting .368 (28-for-76) in 19 road games this season.
"[Yelich] has done a nice job," Marlins manager Mike Redmond said. "He just continues to get more and more confident day-in and day-out. They've been bringing in a lot of lefties against him, but he's been having good at-bats. ... He's a great young player, and he's going to be a great player in the big leagues for a long time."
Koehler had control problems in the fifth. Following a solo homer by Brian Bogusevic, Koehler walked the bases loaded. Reliever Dan Jennings came in and got the final two outs of the inning, but not before Anthony Rizzo hit a sacrifice fly to make it 3-2.
"It's disappointing when the team puts up three runs like that, [because] you want to get them back in the dugout as soon as possible," Koehler said. "You give up a leadoff home run, things like that are going to happen. But after that, you have to be able to shut them down."
Koehler -- who went 4 1/3 innings and gave up two runs on four hits and three walks with four strikeouts -- was hit on the lower right leg with a comebacker off the bat of Castro in the third, but remained in the game.
"It [hit] the back of the knee, and I think it hit some nerve, so at first, I actually didn't even know where it hit me," Koehler said. " ... I walked it off a little bit and it's fine."
In the same inning, Coghlan -- who made his first career start at third base -- saved a run with a diving grab of a sharp ground ball to his left, getting the force out at second to end the inning.
Coghlan said playing third base reminded him of his Triple-A days, when he last played the position.
"I was grateful to stop [that ball]," Coghlan said. "It was a big play, because it saved a run. … I think the last time I was there was Triple-A, but … for me it was an accomplishment ... and hopefully they have more trust and continue to let me play there."
"I thought it was a great play," Redmond said. "It really was.... To have him be able to be an option at third base is big. We'll keep plugging him in there and see how he does. He's going to play the outfield as well, but for him to be able to do that is huge, not only for his value, but for ours."
Marlins' relievers Jennings, Ryan Webb, Mike Dunn and A.J. Ramos combined to throw 4 2/3 scoreless frames without allowing a hit.
"The bullpen came in and did a nice job," said Redmond. "[Webb] did a great job giving us some big outs."
"[The bullpen] did a great job," Koehler said. "They've been doing a great job all year. They had to go to them a little sooner than originally anticipated, but for them to come in there and [give us] 4 2/3, it's a great job by them."
The Marlins tied a season high with their third straight road win and have won eight of their last 12 games against the Cubs at Wrigley Field.