Teheran (3-1) retired his first 12 batters before Ryan Howard led off the bottom of the fifth with an infield single.
The 23-year-old righty struck out four and got 14 outs on flyballs in his first complete game in 38 career starts. He became the ninth Braves starter in the first 14 games this year to allow one run or none.
Philadelphia wasted an excellent outing by Cliff Lee (2-2).
The ace left-hander struck out 13 and pitched around 11 hits, throwing a career-high 128 pitches.
Gattis drove an 0-2 pitch into the left-field seats in the fourth. It was his fifth homer in his past three games at Citizens Bank Park.
Lee, a prolific strike-thrower, often gets hurt on 0-2 pitches. He entered the game with five hits allowed, including two doubles, among a dozen 0-2 pitches.
After the slow-footed Howard reached on a slow roller toward second base that was fielded by shifted third baseman Chris Johnson, Teheran retired the next 11 batters before Carlos Ruiz lined a single to left with two outs in the eighth.
Jimmy Rollins hit a single with two outs in the ninth.
Rollins stole second on a 3-0 pitch to Chase Utley. But Utley following with a game-ending groundout.
Pitchers had the advantage against bundled-up hitters on a chilly night. The temperature was 47 degrees at first pitch.
The series resumed after Tuesday night’s rainout, which will be made up in June.
The Braves rallied for a 9-6 win Monday night when Dan Uggla hit a ninth-inning grand slam off fill-in closer Jake Diekman.