Teheran was determined to pitch through the pain, especially after the Braves gave him three runs in the first.
The Braves extended their season-best winning streak to seven games, but perhaps the best news was that Teheran wasn't hurt. Atlanta, which placed catcher Evan Gattis on the 15-day disabled list this week with a bulging disk in his back, couldn't afford another key injury as it battles Washington for the NL East lead.
Teheran said his lower right leg was "burning" after he was struck by the liner.
"I wanted to stay in the game so bad," Teheran said.
With manager Fredi Gonzalez and assistant trainer Jim Lovell watching from behind the mound, Teheran tested the leg with a few throws to the plate and stayed in.
Teheran (8-5) gave up four hits and three walks while lowering his ERA to 2.29.
"He gave us a great outing," Gonzalez said. "The last two innings, it was a gut check. He got himself in trouble and made some great pitches."
The Mets have lost four straight and seven of their past eight games and are a season-worst 11 games below .500. They hope to have David Wright is back in the lineup when they open a home series against Texas on Friday night. Wright remained in New York this week to receive treatment for his bruised left rotator cuff.
"Obviously we miss David's bat in the lineup, there's no doubt," Mets manager Terry Collins said. "We competed as good as we can compete."
The Braves remain a half-game ahead of Washington.
Atlanta's winning streak includes a four-game sweep at Philadelphia and its first sweep of the Mets since September 2012 at New York. The seven-game streak is Atlanta's longest since 14 straight from July 26-Aug. 7 last season.
New York rookie Jacob deGrom (1-5) again battled his season-long control problems in a long first inning.
The Braves, helped by two walks from deGrom, loaded the bases with no outs in the first. Atlanta was in danger of wasting the opportunity before Johnson lined the three-run double past Campbell at third base with two outs.
After throwing 37 pitches in the first, deGrom didn't walk another batter or allow another run. He gave up three runs on six hits in five innings.
"That first inning got me," deGrom said. "I think I was a little amped up, just trying to maybe overthrow it a little bit in the first. To recover from that was good. I wanted to at least get to five [innings]."
Eric Young Jr. singled, stole second, advanced to third on a wild pitch and scored on Curtis Granderson's fly ball to left field in the fourth inning. Young reached on another single in the sixth before being picked off first base by Teheran.
Teheran gave up a single to Juan Lagares and walked Granderson before striking out Campbell to end the sixth.
Lagares had a one-out single off Anthony Vavaro in the eighth. Daniel Murphy hit a sharp grounder toward second base that Tommy La Stella caught while diving toward the bag. While on the ground, La Stella flipped the ball to Andrelton Simmons for the force out at second.
La Stella started after leaving Tuesday night's game with a right foot that was bruised when he was hit by a pitch.
Gonzalez said the team will have a better estimate on a recovery period for Gattis when the success of Tuesday's epidural can be evaluated in about four days. Gonzalez said he has "not even entertained" the thought of Gattis playing left field when he returns to possibly take pressure off his back. ... The first-pitch temperature was 91 degrees, and Braves were allowed to report later than normal and take batting practice in the indoor cage "to let their bodies recharge a little bit." ... Both teams are off Thursday. The Mets open a home series against Texas on Friday night, and the Braves' homestand continues with a weekend series against Arizona.