Lance Berkman knew what was coming from Diamondbacks reliever Chad Qualls. It hardly mattered.

Representing the potential tying run with two outs in the eighth inning, Berkman struck out on five pitches against his former teammate in Arizona's 5-3 win Monday night over the Houston Astros.

"He came in and threw three nasty pitches," Berkman said. "There's nothing you can do when he throws the ball that way."

With that strikeout against the only batter he faced, Qualls _ who came to Arizona from Houston in the trade for closer Jose Valverde _ helped preserve a win for right-hander Dan Haren.

Haren (4-1) scattered five hits over a season-high 7 2-3 innings and Mark Reynolds hit a two-run double for the Diamondbacks, who improved their major league-leading record to 19-7. Haren, who also had an RBI double, retired the side in order six times. He finished with five strikeouts and one walk.

"That's definitely the best stuff I've had all year," Haren said.

Brandon Lyon pitched a perfect ninth for his eighth save in 10 chances.

In the only other NL games, Cincinnati beat St. Louis 4-3, and San Francisco topped Colorado 4-0. Pittsburgh's game at the New York Mets was postponed by rain and rescheduled for Aug. 11.

Miguel Tejada had an RBI double in the eighth for the Astros, who have lost three straight after a season-best six-game winning streak.

Arizona is 10-2 at home.

"We just keep our nose to the grindstone and play every day," manager Bob Melvin said. "You can't help but to take a look at the start we've had but it's just that _ a start."

Haren helped his own cause in the third. After Stephen Drew doubled off the center-field wall, Haren hit a line drive to right field. Hunter Pence took two steps in and then backpedaled in vain as the ball sailed over his outstretched glove and to the wall for an RBI double.

"It's a lucky thing they play me in more often than not," Haren said.

The Diamondbacks added three more runs in the fourth off Chris Sampson (1-3). Orlando Hudson walked and Conor Jackson singled. Reynolds followed with a double into the left-field corner, scoring Hudson and Jackson to make it 3-0. Reynolds then stole third and scored on Chris Snyder's single.

"We're playing good baseball right now," Jackson said. "We need to focus on what we're doing well and keep doing it."

Haren retired his first 12 batters before running into trouble in the fifth. Berkman walked, went to third on Carlos Lee's double and scored on an RBI groundout by Pence.

Mark Loretta singled to make it 4-2. Haren hit J.R. Towles with a pitch, and Sampson was safe at first when his bunt rolled untouched between Haren and Reynolds to the left of the mound for a single that loaded the bases.

But Haren escaped further damage when Kazuo Matsui popped out and Michael Bourn struck out.

"We could have used a big hit when we had the bases loaded," Astros manager Cecil Cooper said. "We come through right there and it's a whole different ballgame. We need to get two-out base hits. That's what got us on our winning streak and that's what we need again."

Eric Byrnes made it 5-2 in the fifth when he was hit by a pitch and scored on Jackson's single.

Sampson allowed five runs and seven hits over 4 1-3 innings with two walks and a hit batter.

The Astros chased Haren in the eighth on consecutive two-out doubles by Bourn and Tejada that cut Arizona's lead to 5-3, setting the stage for Qualls.

"The flu's been going around the whole team and I had it early in the year," Haren said. "It was really bad. I lost weight and everything, but I'm finally getting back into my normal routine."

Reds 4, Cardinals 3

Edwin Encarnacion had a pair of RBI doubles and made a standout play at third base in the seventh inning to preserve a one-run lead in Cincinnati's victory at St. Louis.

Bronson Arroyo (1-3) worked six solid innings for the Reds, who won their first series opener after losing the first nine. Francisco Cordero got his fourth save. Adam Dunn and Brandon Phillips had an RBI apiece to help Cincinnati win three in a row for the first time this season

The Reds bunched five hits in the second and third off Todd Wellemeyer (2-1), scoring twice in each inning to go ahead 4-0.

Rick Ankiel hit his fifth home run for the Cardinals.

Giants 4, Rockies 0

Matt Cain got an early lead and his teammates held it, helping host San Francisco's hard-luck pitcher to his first win of 2008 with a 4-0 victory over the slumping Rockies.

Giants manager Bruce Bochy moved past former San Francisco skipper Felipe Alou for most victories by a foreign-born manager in major league history with 1,034.

Cain (1-2) didn't allow a run over 5 1-3 innings, ending a five-start winless stretch to start the year. Vinnie Chulk, Tyler Walker and Brian Wilson finished the eight-hit shutout.

Aaron Rowand doubled and drove in two runs.

Franklin Morales (1-2) took the loss.