Had he done so, the Atlanta Braves might still have a long winning streak, but Gattis says the team's goal now is to win the three-game series.
"Yeah, man, we had a good run," Gattis said. "I hate that it ended."
Miami stopped its own six-game skid.
The Braves fell one victory shy of tying the 2000 team for the franchise's longest winning streak since the 1891 Boston Beaneaters won 18 straight.
Hechavarria led off the Miami ninth with a triple and scored on the wild pitch by Walden (4-2).
"I'm more disappointed in not blocking it," Gattis said. "I didn't see the replay, but I'm pretty sure I just came up on it. I think it went through me. I just came up on it a little bit with my mitt."
Both teams finished with just three hits.
Hechavarria's NL-leading sixth triple bounced against the bottom of the wall in left-center field and was the game's only extra-base hit. He scored standing up -- ending the Marlins' 22-inning scoreless string -- when Walden's fourth pitch to the next batter, Ed Lucas, got past Gattis.
Eovaldi allowed a first-inning single by Freeman and retired his final 14 batters. He walked three and struck out eight.
"They're a great team," Eovaldi said. "I threw the ball really well tonight, It was just a great win all around."
Eovaldi received no run support for his fifth straight start. The Marlins haven't scored while Eovaldi has been in a game since his 8-3 victory over Washington on July 12. He has a 1.04 ERA in his last four starts.
"He's always had a good arm to me," Heyward said after going 0 for 3. "Attacks the strike zone, has a lot of movement on his pitches, especially the fastball. Sometimes it's a little bit wild and effective as far as which side of the plate."
Braves third baseman Chris Johnson, who leads the NL with a .338 batting average, was ejected by plate umpire Jim Joyce to end the first after taking three pitches -- all fastballs -- for strikes with runners on first and second.
Johnson yelled at Joyce and threw his bat and helmet before walking to the dugout. After a 54-minute rain delay, Janish replaced Johnson.
Johnson was upset with himself for not being in the batter's box with two out in the ninth.
"Yeah, I'm one of those guys that wants to be in the game the whole time and wants to be in that spot," he said. "So, yeah, I'm definitely kicking myself a little bit."
Marlins outfielder Giancarlo Stanton didn't play. Manager Mike Redmond said he gave his star the night off because "it seems like he's just really grinding and not having a whole lot of fun out there."
The Marlins have the NL's worst winning percentage and they're last in the majors in homers, RBIs and slugging percentage.
- Walden left the game after taking a liner off his pitching hand from Logan Morrison, the third batter he faced. Braves manager Fredi Gonzalez said Walden might need a couple of days to rest his hand, but added that the injury didn't appear serious.
- RHP Anthony Varvaro got Atlanta's final out in the ninth.
- McCann was held out of the lineup with a sore knee as Gattis took his place.
- Atlanta OF Jordan Schafer was activated from a rehab assignment before the game and optioned OF Jose Constanza to Triple-A Gwinnett.
- Upton went 0 for 4 to end a 13-game hitting streak.