Neither team pushed across a run the rest of the way as the D-backs hung on for a 3-2 win at Marlins Park.
"You never know," Marlins manager Mike Redmond said. "That's the beauty of the big leagues, right? Both teams come up swinging the bats and then get zeroes the rest of the way."
Trevor Cahill (3-8) won his second consecutive start and put together his fourth straight quality start as he lasted 6 2/3 innings, inducing three of the four Marlins double plays in the game.
"Both pitchers just shut it down," D-backs second baseman Aaron Hill said. "It's funny how it works that way, but both guys did a great job of shutting the offense down. Trevor settled down and did a great job and gave us what we needed for our bullpen to get a little rest. So it's a fun win."
It didn't look like either starter was going to be long for this game in the first.
Cliff Pennington got the scoring started for the D-backs with a homer off Brad Hand (2-5) that hit the left-field foul pole.
The D-backs then caught a break when the Marlins decided to let a tapper by Mark Trumbo roll down the third-base line, hoping it would go foul. Instead, it stopped a few feet from the bag in fair territory and Trumbo had himself an infield single.
Aaron Hill then made that hit sting just a little more when he followed with a two-run homer to give the D-backs a 3-0 lead.
"He gave up the big three-spot there in the first, which we've talked about that's one of those things he needs to work on," Redmond said. "He needs to eliminate the big inning and he wasn't able to do that. But he settled in and gave us seven innings, so I was very pleased with that. He was effectively wild; I think that would be a good way to describe this outing. But at the end of the day, I thought he gave us what we needed -- enough to give ourselves a chance to win that ballgame."
The home run by Hill, his 10th of the year, came on the first pitch.
"This guy's got a lot of movement for a lefty -- good velo and a lot of movement," Hill said of Hand. "Going up there just looking for something up. I typically don't swing at the first pitch, but it worked out."
It didn't take long, though, before Cahill found himself in trouble of his own.
The Marlins opened their half of the first with three straight singles, the last a run-scoring hit by Giancarlo Stanton.
One out later, Garrett Jones drove home a run with a single to left to cut the Arizona lead to 3-2.
"In the first inning, I thought I was making decent pitches, but some groundballs were finding holes," Cahill said. "[Catcher Tuffy Gosewisch] did a good job mixing enough offspeed and whatnot to keep them off balance just enough, and I was able to get out of some jams. Fastball command wasn't there as much as it was the last couple [starts]."
While both teams had their scoring opportunities the rest of the game, they were not be able to cash them in.
The Marlins failed to capitalize on some wildness by Cahill when he issued back-to-back one-out walks in the third.
Casey McGehee followed the walks by hitting into a 5-4-3 double play.
"He's an All-Star-caliber hitter, so he's not trying to walk," Cahill said. "He saw a pitch and he hit it real good. He squared it up, so if you're his manager, you can't really fault him. It's just one of those things where I caught a couple of breaks and was able to get through it."
Then in the seventh, Cahill got the first two outs before he allowed a single and hit a batter. The D-backs then went to the bullpen and brought in rookie Matt Stites, who after walking Christian Yelich to load the bases, got Donovan Solano to ground into a forceout to end the threat.
"Stites did a great job in a big situation getting out of it," Cahill said.
Addison Reed pitched a perfect ninth to earn his 29th save.