Chris Young belted a two-run homer, and Koehler allowed four runs in five innings as the Mets blanked the Marlins, 4-0, at Citi Field.
Mets starter Dillon Gee struck out six and scattered three hits over eight shutout innings. Carlos Torres closed out the ninth in a non-save situation, and the Marlins were shut out for the second time this season.
The Marlins wrapped up their road trip -- which started in Atlanta -- at 2-4, but they realize that a few games slipped away.
"We definitely had opportunities," manager Mike Redmond said. "We had plenty of opportunities in Atlanta to win at least two of those games, and really should have won two of these games as well. We know we're right there, but at the same time, we've got to execute. We've got to execute better offensively, we've got to execute better pitching-wise."
Koehler arguably has been Miami's second-best starter, behind Jose Fernandez. A New York native who attended SUNY Stony Brook, Koehler had gone at least six innings and allowed two runs or fewer in his first four starts.
With four such outings, Koehler matched Kevin Brown (1997) for the most consecutive starts by a Marlin to open a season.
"I felt fine, I just couldn't execute," Koehler said. "A lot of deep counts. A lot of situations where they were in hitters' counts. And even when I did throw strikes, it was across location and not necessarily getting the ball exactly where I wanted to."
In taking two of three in the series, New York put an end to Christian Yelich's hitting streak at 17 games, and Steve Cishek's stretch of consecutive saves at 33 games.
"We've got to get back to playing our style of baseball, and that's pitching, playing defense and timely hitting," Koehler said. "When we do those three things, we're a dangerous club. When we lack doing one of those three things, we're going to get ourselves in trouble. That's what you saw today."
Koehler entered the game having thrown 18 straight scoreless innings against the Mets, and he bumped it up to 19 after retiring the side in order in the first inning.
But in the second inning, he had trouble finding the plate, and it led to New York grabbing the early lead.
Daniel Murphy walked to open the inning, and Young was hit with a pitch. Lucas Duda's opposite-field ground-rule double put New York on the board.
At that point Koehler had thrown 29 pitches, just 13 of them for strikes.
Despite laboring to throw strikes, Koehler worked out of a bases-loaded jam in the second.
Once he got through the second inning, Koehler felt he could regroup and get rolling. But it never happened, as he walked four and allowed five hits.
"You get through an inning like that, and the mind-set is, 'OK, now it's time to get back on track, and let's go put some zeros on the board,'" he said. "They were ugly zeros, but for the most part, that's what I did up until the fifth. Then I ran into some trouble. I was walking a tightrope most of the day and just happened to fall off there and [couldn't] make the one pitch to get the team back in the dugout."
Gee, meanwhile, held Miami without a hit until Marcell Ozuna opened the fourth inning with a single.
"You're going to look up at the end of the year, and this guy is going to have 15, 16 wins, because he can pitch," Mets manager Terry Collins said. "If he gets some run support, he's going to win games."
Miami managed just three hits all afternoon, with Garrett Jones providing a clean single in the seventh inning.
"Gee had a good two-seamer," Jones said. "He usually throws a lot more changeups. He was just going right after us with his two-seamer because it was moving so much. It was tough to square up. Guys were fouling it off and getting behind in the count. I don't know if it was the breeze, but it was moving a lot, and he was throwing it where he wanted to and very effectively."
Command issues caught up to Koehler in the fifth inning, when New York put up three runs, two on Young's homer.
A leadoff walk to Curtis Granderson to open the inning set the tone before David Wright ripped an RBI double off the wall in left field. Wright now has 106 RBIs against Miami. The only team against which he has more is the Phillies (107).
The crushing blow, however, was delivered by Young, who capped an 11-pitch at-bat with his drive to left.
"It's a 3-2 count," Koehler said. "Obviously, I walked my fair share of guys up to that point. At the same time, I wasn't going to give in. I kept throwing strike, strike, strike, and he kept fouling it off. Then I kind of a hung a 3-2 slider there, and he got me."