Lm Otero, Associated Press
Texas Rangers' Josh Hamilton celebrates after hitting a the game-winning home run in the ninth inning.

ARLINGTON, Texas — Josh Hamilton hit a two-run homer with two outs in the ninth inning, lifting the Texas Rangers over the Los Angeles Angels 5-4 Wednesday night.

It was Hamilton's 20th homer of the season, and his first since June 17. He connected off major league saves leader Francisco Rodriguez, who gave up three runs in only his third blown chance this year.

Hamilton and K-Rod (0-2), who already has 35 saves, will be AL teammates at the All-Star game next week. Hamilton leads the majors with 89 RBIs and will be one of the starting outfielders.

Pinch-hitter Ramon Vazquez drew a walk to start the ninth against Rodriguez before Ian Kinsler, the AL's top hitter, struck out. Frank Catalanotto then grounded out, moving Vazquez to second before Michael Young's RBI single got Texas within 4-3.

After Young stole second base, Hamilton lined a 3-1 pitch into the right-field seats for his first homer in 70 at-bats. Jamey Wright (5-3), the fourth Texas pitcher used during a makeshift night on the mound, worked two scoreless innings.

The Rangers (48-44) moved four games over .500 for the first time since 2006 and got within 6 1/2 games of the AL West-leading Angels.

TIGERS 8, INDIANS 6: At Detroit, Miguel Cabrera hit a two-run homer in the ninth inning and Detroit rallied from an early six-run deficit to beat Cleveland 8-6 on Wednesday night, the Indians' 10th straight loss. The Tigers, who trailed 6-0 in the sixth, won when Cabrera connected with one out for his third homer in two games. Todd Jones (4-0) pitched out of a jam in the top of the ninth, escaping when Casey Blake was thrown out at the plate.

YANKEES 2, RAYS 1 (10): At New York, Bobby Abreu hit a game-winning double off Grant Balfour in the 10th inning for New York. Derek Jeter scored twice and Jason Giambi singled in a run for the Yankees, who gave out 20,000 replica mustaches to fans to support the slugger's All-Star candidacy. New York has won four straight after losing five of six. The Rays have lost three straight for the first time since they were swept at Boston from June 3-5.

RED SOX 18, TWINS 5: At Boston, Dustin Pedroia hit a three-run double as Boston followed an overturned triple-play call with seven runs in the seventh inning to beat Minnesota and complete a three-game sweep. Jacoby Ellsbury had a career-high four hits, and Manny Ramirez, Kevin Youkilis and Sean Casey had three apiece to help the Red Sox set season highs for hits (23) and runs.

MARINERS 6, ATHLETICS 4: At Oakland, Calif., Jose Lopez hit a three-run double and Adrian Beltre had three hits and drove in two runs as Seattle ended a three-game losing streak. Donnie Murphy drove in three runs and Jack Cust snapped out of an 0-for-18 slump with a home run for the A's, who lost at home to the Mariners for the 11th time in 14 games.

WHITE SOX 7, ROYALS 6: At Kansas City, Mo., Carlos Quentin hit two two-run homers and Chicago rallied from a five-run deficit, scoring the go-ahead run on an eighth-inning balk. Quentin hit his 20th homer in the fourth off Royals starter Brian Bannister to begin the rally. Quentin added a second homer off Bannister in the sixth, helping send the White Sox to their 11th win in 13 games. -->

BLUE JAYS 9, ORIOLES 8: At Toronto, Alex Rios and David Eckstein both drove in two runs and A.J. Burnett won for the third time in four starts for Toronto, which had a seven-run fourth inning. Eckstein had two doubles and Rios had two singles for the Blue Jays, whose bullpen survived a shaky ninth to seal a second straight win for the first time this month.

National League

PHILLIES 4, CARDINALS 2: At Philadelphia, Ryan Howard and Pedro Feliz hit solo homers in the eighth inning and Philadelphia ended a four-game losing streak. Howard drove an 0-2 pitch from Kyle McClellan (1-4) for his 25th homer, rallying the Phillies after they blew a 2-0 lead. Feliz added his shot off Chris Perez. Brad Lidge retired Albert Pujols on a fly ball and struck out Rick Ankiel with two on to earn his 20th save.

METS 5, GIANTS 0: At New York, Johan Santana tossed five effective innings before his night was cut short by a rain delay, but New York won its fifth straight. Ramon Castro had a three-run homer, and Carlos Delgado had three hits and is batting .429 (15-for-35) in nine games this month. The Giants have lost four of five and were shut out for the second straight game for the first time since Oakland did it June 9-10 last year, according to the Elias Sports Bureau.

CUBS 5, REDS 1: At Chicago, Carlos Zambrano allowed one hit over eight innings — a second-inning homer by Adam Dunn — and retired the final 20 batters for Chicago. In his second start since coming off the disabled list with a right shoulder strain, Zambrano (10-3) walked none and struck out five. Carlos Marmol relieved to start the ninth and gave up a two-out single to Jay Bruce and walked two. Kerry Wood relieved and got Brandon Phillips to foul out to earn his 23rd save.

DODGERS 2, BRAVES 1: At Los Angeles, Derek Lowe took a perfect game into the seventh inning and Matt Kemp homered for Los Angeles. Lowe retired the first 18 batters before Gregor Blanco led off the seventh with a clean single to center. Jonathan Broxton replaced Lowe (7-8) after Jeff Francoeur homered in the eighth. Takashi Saito pitched a perfect ninth to earn his 17th save.f-b

Atlanta's Tim Hudson (9-7) did not permit a runner until James Loney's leadoff double in the fifth.

ROCKIES 8, BREWERS 3: At Milwaukee, Garrett Atkins hit two homers for Colorado and Glendon Rusch won as a starter for the first time in exactly two years. Rusch (2-3) had not won as a starter since beating the Brewers on July 9, 2006, in his last start for the Chicago Cubs. He missed all of last season while recovering from a blood clot in his lung, and took a loss.

NATIONALS 5, DIAMONDBACKS 0: At Washington, Jesus Flores' three-run, pinch-hit homer in the sixth inning to lead Washington, which snapped a six-game losing streak. Nationals starter John Lannan (5-9) allowed two hits and walked three in six shutout innings for his first victory since May 18.

MARLINS 5, PADRES 2: At San Diego, Scott Olsen allowed four hits over eight innings, and Mike Jacobs and Hanley Ramirez homered for Florida. Olsen appeared to be in line for his first major league complete game, but he was lifted for a pinch-hitter in the ninth as the Marlins sent eight batters to the plate and scored twice.

ASTROS 6, PIRATES 4: At Pittsburgh, Geoff Blum hit a three-run homer in the first inning and Houston avoided a three-game sweep. Kazuo Matsui, Ty Wigginton and Michael Bourn all had two hits for the Astros, who blew a four-run lead before scoring twice in the seventh.