PHOENIX -- Dan Haren threw seven sharp innings, Justin Upton hit his 22nd home run and the Arizona Diamondbacks defeated the Houston Astros 4-3 on Sunday to complete a three-game sweep.
Chad Qualls got the last four outs for his 24th save in 29 chances, stranding the potential tying run in the eighth and ninth innings, but was injured on the final play.
Qualls was hit by a liner off the bat of Jason Michaels. Shortstop Stephen Drew picked up the ball and threw Michaels out to end the game.
Qualls landed awkwardly and stayed on the ground for several moments. Qualls, favoring his left leg, was helped off the field by trainers.
Haren (13-8) allowed three runs on six hits and two walks, and he struck out seven.
Houston ace Wandy Rodriguez (12-9) gave up four runs on seven hits and three walks in six-plus innings. He struck out seven and allowed multiple runs for only the second time in 11 starts.
Haren worked out of a bases-loaded, one-out jam in the seventh.
He went to 3-2 on pinch-hitter Geoff Blum before Blum popped to shortstop. Then Haren got pinch-hitter Darin Erstad on a fly to right.
Haren opened the eighth by giving up singles to pinch-hitter Jason Michaels and Michael Bourn. Juan Gutierrez came on and, after Bourn stole second base, gave up RBI groundouts to Jeff Keppinger and Lance Berkman to make the score 4-3.
With two out, Carlos Lee singled, stole second and took third on a wild pitch before Qualls struck out Hunter Pence.
In other Astros news, oft-injured lefty Mike Hampton won't pitch again this season and is planning to have surgery on his pitching shoulder and both knees.
Giants 9, Rockies 5: SAN FRANCISCO -- Edgar Renteria hit a go-ahead grand slam in the seventh inning and the Giants pulled even in the NL wild-card race.
The Giants moved into a second-place tie in the NL West with Colorado, six games behind Los Angeles. The Rockies lost their season-high fifth in a row.
Phillies 3, Braves 2: PHILADELPHIA -- Carlos Ruiz hit a two-run, go-ahead double in the seventh inning and Joe Blanton pitched seven strong innings.
Blanton (9-6) allowed one run on three hits in seven innings, making it 12 straight starts he has allowed three earned runs or less.
Brewers 4, Pirates 1: MILWAUKEE -- Shortstop Craig Counsell helped Milwaukee turn a season-high four double plays and drove in two runs as the Brewers beat the Pittsburgh Pirates for the 21st straight time at home.
The Brewers' streak is the longest such string in the majors since the Indians beat the Baltimore franchise 27 times in a row in Cleveland from 1952-54.
Cardinals 2, Nationals 1: ST. LOUIS -- Adam Wainwright earned his major league-leading 16th victory and Albert Pujols had the go-ahead hit in the sixth inning, helping the St. Louis Cardinals complete a three-game sweep.
Colby Rasmus had two hits and scored twice for the NL Central leaders, who are 29-4 since July 1 in starts by either Wainwright (16-7), Chris Carpenter or Joel Pineiro.
Dodgers 3, Reds 2, 12 innings: CINCINNATI -- Matt Kemp homered for Los Angeles' first run, then hit a sacrifice fly in the 12th inning that lifted the Dodgers.
The NL West leaders took two of three in the series, extending their lead over Colorado. No surprise at the outcome -- the Dodgers are 22-4 against the Reds since 2006, their best mark against any NL team.
Mets 4, Cubs 1: CHICAGO -- Nelson Figueroa struck out a career-high 10 and had an RBI single to lead the New York Mets over the Chicago Cubs.
Figueroa (2-3) allowed one run on six hits in seven-plus strong innings. Taking over injured Johan Santana's spot in the rotation, Figueroa won his first start since April 27, 2008.
Red Sox 7, Blue Jays 0: BOSTON -- Paul Byrd, making his first major league start since last September, pitched six shutout innings and Boston completed a three-game sweep.
The win was the sixth in seven games for Boston, which pulled 31/2 games ahead of Texas in the AL wild-card race.
Yankees 8, White Sox 3: NEW YORK -- Mark Teixeira homered and drove in four runs, Johnny Damon also went deep and the Yankees polished off a three-game sweep of the struggling White Sox.
Alfredo Aceves (9-1) provided stellar relief pitching after Joba Chamberlain's abbreviated outing.
Orioles 5, Indians 2: BALTIMORE -- Brian Matusz pitched seven innings of four-hit ball, Felix Pie homered, and the Orioles beat the Indians for a series split.
Making his sixth major league start, Matusz (3-2) allowed one run had a career-high eight strikeouts.
Tigers 4, Rays 3: DETROIT -- Placido Polanco hit a three-run homer with two outs in the eighth inning, lifting the Tigers to a win over the Rays.
Third baseman Brandon Inge sealed the victory, leaping to snag B.J. Upton's high hopper down the line with a runner on first and throwing him out to end the game.
Angels 9, Athletics 1: ANAHEIM, Calif. -- John Lackey pitched eight innings of five-hit ball for his 100th victory, Torii Hunter and Kendry Morales hit three-run homers, and the Angels salvaged a split of their series with the last-place Athletics.
Lackey (9-7) became the fifth pitcher to win 100 with the Angels.
Royals 3, Mariners 0: SEATTLE -- Zack Greinke pitched a one-hitter, allowing only a second-inning single by Kenji Johjima.
Greinke (13-8) retired the final 22 batters after Johjima's two-out single up the middle. Greinke leads the majors with three shutouts and six complete games, and his 2.32 ERA is best in the AL.