HOUSTON -- Once the Arizona Diamondbacks broke out of their offensive doldrums, their losing streak ended, too.
Ryan Roberts matched a career high with four hits and Arizona beat the Houston Astros 7-5 on Sunday to snap a season-high seven-game skid.
"It was big for us in a lot of ways," Diamondbacks manager A.J. Hinch said. "Stopping the losing was big, but also for us to smile a little in the dugout, to feel what it's like to play from ahead."
Augie Ojeda added two hits and a pair of RBI for the Diamondbacks, who had 14 total hits and also ended a season-long nine-game road skid.
Arizona had scored only 14 runs during its seven-game slide. The Diamondbacks hadn't scored seven since Aug. 10, and the five runs they put up in the first inning were a season high.
"It just looked like we were more patient, like we had more of a plan," Hinch said. "We talked with the hitters before the game and they responded."
Arizona also benefited from five walks.
"We've got to be a little more patient and we talked about it before the game," Miguel Montero said. "We have to be more patient when we have men on base. We're a young team and sometimes we just want to go up there with a man on base and swing. It's tough for us, but it's a learning process. We did better today."
Jon Garland (7-11) went six innings and yielded four runs on 10 hits and a walk, and the bullpen got the game to Chad Qualls, who worked the ninth for his 23rd save of the year.
The Diamondbacks sent 10 men to the plate in the five-run first, highlighted by Ojeda's bases-loaded, two-run single. Montero and Garland also added RBI singles and Astros starter Bud Norris forced in the other run with a bases-loaded walk to Alex Romero.
Arizona made it 6-0 in the second on Brandon Allen's first major league RBI, a single to center. Norris (3-2) was yanked after facing two batters in the second, surrendering the six runs on six hits and three walks in his fifth major league start.
"It looked like he was trying to overthrow, trying to throw harder," Houston manager Cecil Cooper said. "And when you try to throw harder, you aren't going to throw hard, and they roughed him up a little bit. He left some balls up in the strike zone and he could not find his rhythm today."
Norris has lost two in a row after winning his first three games.
"It was a little tough, obviously," he said. "No excuses really. You just have to get back in the bullpen and work on a few things.
"I can't really say I was overthrowing, but I might have been thinking a little too much instead of just going out there and playing the game. I know my strengths, and I need to stick to them more."
Humberto Quintero had a homer and a double for Houston, which had won a season-high four in a row. The homer came in the fifth inning and was his third of the year.
Pinch hitter Edwin Maysonet singled, and two outs later, Lance Berkman drove him in with a double. Carlos Lee's RBI single closed the gap to 6-3.
Jason Michaels led off the sixth with his fourth home run of the year to make it 6-4, but Roberts' fourth hit drove in Ojeda for a 7-4 lead in the eighth.
Berkman's run-scoring single made it 7-5 in the ninth.
Astros RF Hunter Pence was given a day off from the starting lineup. He was replaced by Michaels. ... Astros LHP Mike Hampton (left shoulder strain) will try to throw a bullpen session on the upcoming road trip. Hampton has been on the DL since Aug. 14. ... Arizona 3B Mark Reynolds (flulike symptoms) sat out and was replaced by Chad Tracy. ... Diamondbacks OF Justin Upton, on the DL since Aug. 6 with a right oblique strain, will begin a rehab assignment Monday with Class A Visalia. ... SS Stephen Drew missed his second game to be with his pregnant wife back in Arizona.