PHOENIX -- Even after homering twice and driving in a career-high five runs, Carlos Quentin refused to declare his season-long slump over.
The 24-year-old Quentin's bat spoke loudly enough in his finest night in less than a year in the majors.
Quentin, who entered hitting .189, drove in the go-ahead run with a sacrifice fly in the eighth inning. Orlando Hudson led off with triple against Jeremy Affeldt (1-1), and Mark Reynolds and Stephen Drew walked to load the bases for Quentin, who flied to deep center.
With Arizona trailing 5-4 in the seventh, Quentin hit a 3-1 breaking pitch from former Diamondback Jorge Julio 390 feet into the left-field bleachers to tie it.
"It's not my night," Julio said. "It's not my day. So tomorrow is another day to keep working."
Julio has a lot of work to do. He has allowed 38 baserunners in 11 1/3 innings, including a stint with the Florida Marlins.
Quentin's first homer of the night put Arizona ahead 4-2 in the fourth. After falling behind 0-2 against starter Aaron Cook, Quentin worked the count to 2-2 and hit a ball 409 feet to left.
"We probably don't win that game without Carlos Quentin, going out on a limb," Arizona manager Bob Melvin said.
Quentin was coming off a 3-for-25 road trip to Houston, Colorado and Pittsburgh. He said he had felt better about his swing in the last week, but the results didn't show it until Saturday night, when his two-run single drove in the winning runs in a 9-8 victory at Pittsburgh.
"I had some good swings in Colorado, no results," said Quentin, who hit .253 with nine homers and 32 RBI in 57 games last year. "They try to preach to us to be mentally strong and move on to the next at-bat."
During the trip, Melvin told reporters he wasn't ready to give up on his struggling right fielder, who is seen as a big part of the Diamondbacks' future.
"We thought there was a good chance he was coming around," Melvin said. "That's the great thing about baseball is you have the next day."
Chris Snyder went 3-for-3, and Tony Clark also homered for the Diamondbacks, who won their third straight.
Arizona improved to 12-6 in one-run games and pulled with a half-game of Los Angeles in the NL West. No other big league team has as many one-run victories.
"We've got good team chemistry," Quentin said.
Doug Slaten (2-0) earned the victory with a scoreless eighth inning. Jose Valverde pitched the ninth for his 17th save in 19 chances.
Brad Hawpe homered off Arizona starter Brandon Webb - his third homer in a week off the reigning NL Cy Young Award winner -- and Willy Taveras had three hits for Colorado.
The Rockies took a 5-4 lead in the seventh with three runs against Webb. The first came on a single by Taveras and the last two on a two-out double by Kaz Matsui, who was activated from the disabled list a few hours before the game. Matsui missed 32 games with lower back spasms.
Matsui also doubled home a run in the third.
But the Rockies couldn't hold on and lost for the sixth time in eight games to fall a season-high nine games under .500 (18-27).
"When you get five off Webb, you've got to find a way to win a ballgame," Colorado manager Clint Hurdle said. "Our guys are giving it what they have. It just hasn't been enough. We've got to find a way to clean things up in certain areas and keep moving forward."
Arizona LF Scott Hairston was scratched from the lineup with a sore wrist. Hairston, who walked in the seventh inning as a pinch-hitter, was replaced by Alberto Callaspo. Callaspo made his first start since the club placed him on the restricted list May 11 after he was arrested for allegedly assaulting his wife. There was little reaction from fans when he came to bat in the first inning. ... Arizona 3B Mark Reynolds, who was at Double-A Mobile a week ago, doubled and has hit safely in five of his first six major league games.