"Someone will question why he deserves to be in the starting rotation still and he showed why," Arizona manager Kirk Gibson said. "I was questioned after his last outing, I was asked why and that's why."
Unlike his last start, in which he allowed six runs and eight hits in 2 1/3 innings, Collmenter (7-7) was in control nearly throughout this outing. And with the success, he felt comfortable throwing almost a dozen usually rare curveballs to the Astros' youthful lineup.
"A lot of the time they're looking fastball or changeup," said Collmenter, who allowed two runs, walked one and struck out five. "They're not looking for a curveball and it will surprise them."
Twice Collmenter buckled the knees of Houston hitters with 69 mph curveballs that started shoulder high out of the right-hander's over-the-top motion and dropped into the strike zone at the batters' thighs.
"With my delivery I'm able to take advantage of the full range of angles," Collmenter said.
Arizona won for the third time in four games and moved a half-game ahead of San Francisco in first place in the NL West. The Diamondbacks are on top of the division for the first time since June 24.
"You guys probably are (surprised) but we're not," Diamondbacks catcher Miguel Montero said. "We're not surprised at all. That's what you get when you play good baseball. When you're close to the race, you go out there and ride it every day."
David Hernandez pitched the ninth inning for his 10th save.
Astros starter Henry Sosa (0-1) gave up four runs and six hits in his major league debut. Sosa walked three, struck out four and hit a batter.
"He had to find some things in the first inning," Astros manager Brad Mills said. "I thought he made some real good adjustments and threw the ball really well after that. I like the way he was able to find himself and come back."
Bloomquist hit Sosa's fourth pitch into the bleachers in left field for his second career leadoff home run and Arizona's fourth this season. Ryan Roberts doubled to center, Montero walked with one out and Kelly Johnson walked with two outs before Goldschmidt singled to make it 3-0.
"The first inning I overthrew the ball a little bit," Sosa said. "I wasn't nervous, just happy. It is my first game in the big leagues. I just enjoyed the game."
Houston scored twice in the fifth on its only four hits against Collmenter. Brian Bogusevic singled, Jimmy Paredes doubled and Barmes lined an RBI single to right. Quintero followed with a single to center to make it 3-2, but Collmenter retired the final three batters to get out of trouble.
Upton doubled and scored and a double by Chris Young in the fifth put Arizona ahead 4-2. Roberts scored from third in the seventh when Barmes dropped reliever Sergio Escalona's throw to second base on a stolen base attempt by Upton.
"We have to keep going out and trying to play good baseball," Upton said.
J.B. Shuck came home on a grounder to short by Lee to pull Houston within 5-3. Parra tripled off the wall in center in the eighth for a 6-3 lead.
Escalona rushed his throw on Upton's seventh-inning stolen base in part because Barmes was late covering the bag. The Astros purchased Sosa's contract after Tuesday's game. Sosa was acquired by Houston from San Francisco on July 19 for IF Jeff Keppinger and had made only one career start higher than Double-A before Wednesday. Sosa became the fifth Astros pitcher and ninth Houston player to make his season debut this season. Houston RHP Brett Myers will enter Thursday's start against Arizona looking to end a career-long six-game losing streak spanning his past eight starts. Myers is 2-2 in 10 appearances and nine starts against Arizona but hasn't beaten the Diamondbacks since June 4, 2005. LHP Joe Saunders, Arizona's starter on Thursday, is 8-4 with a 2.76 ERA in his past 15 starts. Opponents have scored 17 of their 63 runs against Saunders in the first inning and are batting .344 in the opening frame.
Scherzer expected to start for the Nationals against Phillies
Washington Nationals (33-36, fourth in the NL East) vs. Philadelphia Phillies (34-35, second in the NL East)
Singer expected to start for the Royals against Yankees
Kansas City Royals (32-38, third in the AL Central) vs. New York Yankees (38-33, third in the AL East)
Arizona in action against Milwaukee following Kelly's strong showing
Milwaukee Brewers (40-33, second in the NL Central) vs. Arizona Diamondbacks (21-53, fifth in the NL West)
Snell scheduled to start as San Diego hosts Los Angeles
Los Angeles Dodgers (44-28, second in the NL West) vs. San Diego Padres (43-32, third in the NL West)
Orioles take 3-game losing streak into matchup with Astros
Houston Astros (44-28, first in the AL West) vs. Baltimore Orioles (23-49, fifth in the AL East)
Athletics look to break 3-game skid against Rangers
Oakland Athletics (44-30, second in the AL West) vs. Texas Rangers (26-46, fifth in the AL West)