MIAMI (AP) — Tom Koehler said he gave up too many walks, which forced him to throw too many pitches, which eventually led to too many runs.
Koehler took a shutout into the sixth inning but couldn't hold a two-run lead, and the Miami Marlins lost Friday to the Atlanta Braves, 3-2.
"I'm frustrated with myself for letting that one slip away," Koehler said. "It's tough to win ballgames when you're giving a team extra opportunities."
Julio Teheran pitched 7 1-3 innings and scored the tying run in the seventh to help the Braves move a game ahead of Miami atop the NL East.
The Braves trailed 2-0 in the sixth but rallied to break a four-game losing streak. They won for only the third time in their past 13 road games.
Giancarlo Stanton hit his NL-leading 16th home run in the first inning to put the Marlins up 2-0, and Koehler (4-5) made that stand up until the sixth. But a pair of two-out walks in the early innings gnawed at him.
"Two-out walks will kill you," he said. "They turn the lineup over and force you to have to grind a little bit extra."
By the time Koehler departed after seven innings, the Marlins trailed 3-2. They lost for only the second time in their past 13 games against NL East teams.
Teheran (5-3) allowed five hits and two runs, which raised his ERA to 1.83. Teheran, who came into the game 2 for 25 this season, had a single and a double.
The right-hander improved to 4-0 in six career starts against the Marlins with an ERA of 2.50.
"Their guy just mastered us," Miami manager Mike Redmond said. "He gave up the big hit to Stanton in the first, and we really weren't able to get anything going the rest of the game. We didn't have a whole lot of chances."
Three Atlanta relievers combined to complete a five-hitter. Craig Kimbrel, who took the loss Thursday at Boston, pitched a perfect ninth for his 14th save in 16 chances.
Freddie Freeman went hitless and struck out three times. He is 0 for 28 with 12 strikeouts against Miami this year and is batting .347 against the rest of the majors.
With the Braves trailing 2-1 to start the seventh, manager Fredi Gonzalez let Teheran hit, and the pitcher led off with a double. Jason Heyward followed with a run-scoring triple, and B.J. Upton's sacrifice fly drove in an unearned run to put the Braves ahead.
Chris Johnson singled home Atlanta's first run in the sixth. The Braves totaled just eight hits but had several lineouts.
"We hit the ball harder than any other game this year," Gonzalez said. "We were hitting rockets right at people all night long. The score wasn't indicative of how well we swung the bat."
Teheran's only glaring mistake was a hanging slider to Stanton, whose homer was a typical tape-measure job. It cleared the hedge beyond the 418-foot sign in center field, ending a streak of 15 consecutive scoreless innings for Teheran.
He started a new streak beginning in the next inning.
"He was throwing four or five different pitches and commanding them all," Miami's Ed Lucas said. "He does a really good job changing speeds, especially for somebody who is as young as he is. He's got a really good feel for pitching."
The Marlins, who began the night with the best home record in baseball, fell to 20-9 at Marlins Park.
NOTES: Miami C Jarrod Saltalamacchia went 0 for 3 and is in a 1-for-18 slump. ... RHP Ervin Santana (4-2, 4.06) is scheduled to start Saturday for the Braves against Miami RHP Jacob Turner (1-2, 5.35).