Ian Kennedy (4-7) won for the first time in almost two months, giving up two runs on five hits in 5 1/3. He had five losses and three no-decisions in his previous eight starts.
Florida reduced a 3-0 deficit to 3-2 going into the bottom of the sixth, but Snyder gave the Diamondbacks some cushion with his two-run blast off losing pitcher Nate Robertson (6-7).
Arizona still had a 5-2 lead going into the ninth, but closer Chad Qualls committed a throwing error that allowed Cody Ross to reach base with nobody out.
Michael Stanton then doubled Ross to third and both runners scored on a single by Ronny Paulino.
Juan Gutierrez relieved Qualls and got Wes Helms on a pop-up, after which Chris Coghlan grounded into a double play to end the game. Guiterrez recorded his second save.