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.
Susan Sarandon 'very excited' about daughter's pregnancy
Interpol investigating stolen passports on missing flight