Brad Peacock has been sharp since joining the rotation in late April, stringing together one quality start after another. He had another strong outing against Arizona, but didn't get much help from Houston's offense.

Peacock allowed a run in six strong innings, but the Astros struggled against Arizona starter Bronson Arroyo in a 4-1 loss to the Diamondbacks on Tuesday.

Houston seven hits — three of those by Jon Singleton — and went 1-for-6 with runners in scoring position to lose for the second time in 10 road games.

"He was throwing the ball good," Peacock said. "We've been doing a great job jumping on people, but he's one of the best starters in the game and we just couldn't get to him today."

Arroyo (6-4) matched Peacock through seven innings before the Diamondbacks scored two runs off Josh Fields (1-4) in the seventh.

Hill hit a sacrifice fly in the inning and Cody Ross knocked him in with a double to right-center after an error by Astros shortstop Jonathan Villar. Hill added a run-scoring double in the eighth inning to put Arizona up 4-1.

Paul Goldschmidt also homered and Addison Reed worked a perfect ninth for his 16th save. Arizona has won six of eight after its latest rally-from-a-slow-start game.

"We've been pushing on, guys staying with their approach," Diamondbacks manager Kirk Gibson said. "A lot of talking on the bench and we've made some adjustments in-game when we've had to."

Arroyo has hit his stride since a spring-training back injury limited his effectiveness early in the season.

The right-hander won his last outing, against Colorado last Wednesday, and has pitched well against the Astros, entering Tuesday's start 9-1 with a 2.05 ERA his last 12 starts against them.

He labored through the first two innings, working around six baserunners while throwing 42 pitches. The right-hander breezed through the next three innings before Matt Dominguez followed Singleton's leadoff double by lining a run-scoring single through Arizona's drawn-in infield to tie the game at 1-all.

Arroyo got some defensive help along the way, including a pair of strike-out, throw-out double plays and a nifty grab up the middle by Hill on a short-hop in the seventh inning.

Arroyo allowed a run on six hits and struck out five, effectively working the corners against Houston's aggressive hitters.

These guys are really aggressive and young, so I don't think they'd change their approach that much," Arroyo said. "It allowed me to stay on the outer half and get a lot of groundballs."

Peacock won his previous three starts and was sharp in his first game against Arizona.

Goldschmidt splashed a solo homer into the pool in right-center off him in the first inning, but the right-hander allowed two more hits after that — a pair of infield singles in the second.

Peacock walked four and struck out three.

"Peacock did a great job," Astros manager Bo Porter said. "Six innings, strong, he finally started to use the top of the strike zone, did a good job of keeping us right there."

Notes: The Diamondbacks have hit a double in 23 straight games, longest since club-record 32-game streak in 2006. ... Peacock has pitched at least five innings and has yet to allow more than four runs in nine starts after opening the season in the bullpen. ... Houston LHP Dallas Keuchel will go for his team-leading eighth win of the season when Astros head home to face the Diamondbacks and RHP Brandon McCarthy on Wednesday.