Jose Altuve had three hits, including an RBI double, Jarred Cosart pitched six solid innings and the Houston Astros beat the Arizona Diamondbacks 4-3 on Monday night.
Cosart (5-5) allowed three runs and five hits with two walks. The 23-year-old right-hander struck out eight, matching his career high set in his previous start against the Los Angeles Angels. He retired the first 10 batters, five by strikeout.
The Astros scored their four runs in the first two innings off Josh Collmenter (4-3), who settled down to blank Houston over his final five innings.
Paul Goldschmidt doubled in a run for the Diamondbacks, who had won five of six going into the game.
Chad Qualls pitched a scoreless ninth for his eighth save in nine opportunities and seventh straight since May 11.
The Astros have won four of five and 12 of their last 16.
With two outs in the ninth, Arizona's Ender Inciarte doubled off the glove of Marwin Gonzalez in deep left field. But Qualls fanned pinch-hitter Chris Owings to end the game.
Altuve singled and scored in the first, doubled in a run in the second and singled in the fourth. Dexter Fowler had three hits, including a double, and scored twice.
Collmenter went seven innings, giving up four runs, three earned, and seven hits.
Houston manager Bo Porter employed an unusual substitution tactic with one out in the eighth inning.
With Goldschmidt coming to the plate, right-hander Jerome Williams replaced lefty Tony Sipp, who went to right field. Goldschmidt walked, then Sipp came back to the mound and struck out left-handed hitting Miguel Montero.
Kyle Farnsworth replaced Sipp and fanned Martin Prado to end the inning.
Right fielder Gerardo Parra threw out Altuve trying to score from second on Jon Singleton's single in the ninth. Porter challenged, arguing that Montero, the catcher, missed the tag, but the call was upheld after a 38-second video review.
Fowler and Altuve opened the game with singles, then after an out, Jason Castro was hit by a pitch to load the bases. Matt Dominguez's sacrifice fly brought one run home. Another scored on second baseman Aaron Hill's fielding error.
In the second, Fowler singled and scored from first on Altuve's double over the head of Inciarte in center field. Castro doubled Altuve home and Houston led 4-0.
Parra was the first Arizona player to reach base, drawing a walk with one out in the fourth. Goldschmidt followed with Arizona's first hit, a double down the left field line that scored Parra from first. Montero singled to put runners at first and third, but Prado grounded into a double play to end the inning.
Arizona got two more runs in the sixth.
Didi Gregorius singled, then scored from third when Parra singled and Fowler muffed the ball in center field. Goldschmidt walked, then Montero's RBI single made it 4-3.
Inciarte saved a run with a diving catch of Jonathan Villar's fly ball to end the eighth.
NOTES: Altuve stole his 24th base. ... Arizona's David Peralta was 0 for 4 with three strikeouts. He had a base hit in all seven of his previous major league games. ... The Diamondbacks designated RHP Trevor Cahill for assignment, placed 3B Eric Chavez on the 15-day DL (sore left knee), activated RHP J.J. Putz from the DL and recalled RHP Will Harris from Triple-A Reno. Harris pitched a scoreless inning of relief. ... On Tuesday, the Astros send RHP Brad Peacock (2-4, 4.82 ERA) to the mound against Arizona RHP Bronson Arroyo (5-4, 4.50).