Teheran (12-7) allowed three runs in the first but then settled down to fire 5 2/3 scoreless innings, yielding five hits and three walks while striking out six.
Gattis provided an RBI double in the first and evened the score 3-3 in the third with a run-scoring single.
Chris Johnson's RBI single later in the inning put the Braves ahead to stay.
Miami's Tom Koehler (3-10) allowed four runs on eight hits in a five-inning stint.
Giancarlo Stanton, Logan Morrison and Donovan Solano each drove in a run for the Marlins.
Benedict Cumberbatch's dramatic reading of R. Kelly lyrics is just what you need
Beyonce flaunts bikini body, Blue Ivy in vacation pics