Hamels (5-2) outdueled Boston starter John Lackey (4-3).

Hamels allowed one run, striking out eight.

Lackey gave up four runs and six hits while walking a season-worst five in five innings.

Ryan Howard and Jayson Werth homered for the the NL East-leading Phillies, who moved to a season-high 11 games over .500.

But it may have been a costly victory. Jimmy Rollins left the game in the sixth inning with a calf strain. The three-time All-Star shortstop missed 29 games with the same injury before returning Monday.

In Los Angeles, Chad Billingsley won his third straight start with seven solid innings to lead Los Angeles over Detroit.

Billingsley (5-2) allowed a run and struck out five to give the Dodgers their 11th win in 12 games.

Detroit starter Dontrelle Willis (2-1) was charged with four runs over 5 1-3 innings, and is 1-6 with a 6.91 ERA in eight career starts against the Dodgers.

In New York, Javier Vazquez pitched one-hit ball for six innings as the Yankees snapped a three-game losing streak with victory over their crosstown rivals.

Skipped twice in the rotation this month and making his first start in nine days, Vazquez (3-4) didn't allow a hit until there was one out in the fifth. He left after he was hit on the finger when batting in the seventh.

Yankee Kevin Russo got his first hit of the season and first two RBIs in the majors.

Closer Rivera gave up consecutive two-out doubles to Jason Bay and Ike Davis in the ninth inning, bringing a record Mets home crowd of 41,382 to life before David Wright ground out.

In Houston, Brett Myers didn't allow an earned run in seven innings, helping Houston snap Tampa Bay's six-game winning streak.

Myers (3-3) struck out seven. Astros closer Matt Lindstrom gave up one hit in a scoreless ninth for his 10th save.

The worst team in the National League beat the best in the American League, handing the Rays just their 12th loss in 42 games.

Hunter Pence broke a 1-1 tie with an RBI single in the sixth.

Rays starter Matt Garza (5-2) allowed six hits in eight innings.

In St. Louis, pitcher Brad Penny hit a grand slam in the third inning, apparently injuring his back on the swing, as St. Louis downed Los Angeles.

Penny lasted only a few warmup pitches in the top of the fourth inning before leaving. He was shaky for the second straight start, giving up four runs.

Angels starter Joel Pineiro (3-5) also didn't last long.

He entered with 17 1-3 consecutive scoreless innings but was clubbed for nine runs in three innings against the team that allowed him to leave as a free agent after a 15-win season.

Jason Motte (2-1), the third St. Louis pitcher, struck out two in two perfect innings to claim the win.

In Arlington, Colby Lewis labored through six innings for his first victory in five starts as Texas edged Chicago.

Lewis (4-2) didn't have a 1-2-3 inning until the sixth, but he had already thrown 109 pitches by then and was done.

Hard-throwing closer Neftali Feliz extended his Rangers rookie record with his 12th save in 14 chances.

Nelson Cruz drove in the tiebreaking run with an RBI double in the fourth for Texas, which has won a season-best five straight. Vladimir Guerrero also had an RBI double in the fourth.

Cubs starter Ted Lilly (1-4) pitched into the seventh but remained without a victory since his first start of the season.

In Phoenix, Dan Haren doubled twice, drove in three runs and pitched eight strong innings to power Arizona over Toronto.

Haren (5-3) allowed four runs and two of Edwin Encarnacion's three homers. The All-Star pitcher struck out eight and upped his batting average to .414 (12 for 29) this season.

The Diamondbacks won their third straight game for the first time this season, scoring 29 runs in the process.

Blue Jays starter Brandon Morrow (3-4) was chased after four innings and gave up six runs.

Encarnacion hit half of the Blue Jays' season-high six homers, and Fred Lewis led off the game with a home run for Toronto, which leads the majors in homers.

In Oakland, Coco Crisp drove in two runs in his Oakland debut as the A's beat cross-bay rival San Francisco.

nd the Athletics beat their former ace, Barry Zito.

Oakland was too good for San Francisco starter Barry Zito (6-2), who made just his second outing back at the Coliseum since the 2002 AL Cy Young Award winner was lured across the bay by a $126 million, seven-year deal. Oakland is the only team Zito hasn't beaten in his 11-year career.

Ryan Sweeney added an RBI single for the A's to help starter Trevor Cahill (2-2) win.

San Francisco lost its third straight.

In Minneapolis, Jason Kubel and Minnesota battered a frustrated Milwaukee starter Dave Bush for seven first-inning runs, setting up Minnesota's rout of the Brewers.

Kubel drove in four runs and drew one of eight walks handed out by the Brewers. Bush was in strong disagreement about the second one, yelling at home plate umpire for calling ball four on a close pitch with the bases loaded to force in the first run.

The umpire approached the mound to angrily confront Bush, who was held back by teammates. The pitching coach came out to talk to Bush, who promptly served up a sharp two-run single to Kubel.

Bush then was called for a balk after losing his balance and halting his delivery at the edge of the mound, and Delmon Young followed with an RBI single.

Trevor Plouffe, facing his first pitch as a major leaguer, was next to knock in a run with a single to stretch the lead to five. Bush (1-5) lasted two more batters, recording only one out in the shortest start of his career.

Twins starter Nick Blackburn (5-1) gave up a three-run homer to Carlos Gomez to spoil his shutout bid in the eighth inning.

In Pittsburgh, Jason Heyward homered and drove in three runs as Atlanta beat Pittsburgh and notched its fourth straight win, in the only all National League game of the day.

Tim Hudson (5-1) pitched eight scoreless innings while winning his fourth consecutive decision this month — allowing no more than one run in any victory. He hasn't permitted an earned run in his past 22 innings in Pittsburgh.

Hudson was lifted after throwing 109 pitches and Eric O'Flaherty finished the Braves' first shutout this season.

Pittsburgh's Ross Ohlendorf (0-2) pitched 3 2-3 innings, giving up six runs.

In Seattle, Mike Sweeney homered twice and drove in six runs as Seattle emphatically broke out of its scoring slump, beating San Diego.

Sweeney's three-run homer in the second inning off Wade LeBlanc (2-2) capped a seven-run inning — only the fourth time this season Seattle had scored at least seven runs in a game.

Sweeney then added a two-run shot in the Mariners' five-run fifth inning, a startling offensive display from a team that scored 12 runs total during an eight-game losing streak in late April and early May.

Josh Bard homered and lined a two-run double for Seattle.

Cliff Lee (2-2) cruised to his second win with the Mariners, despite allowing seven earned runs in 6 1-3 innings. He struck out seven and walked none.

Adrian Gonzalez had three doubles and a single for the Padres, while Oscar Salazar had two hits and three RBIs.

In Cleveland, Laynce Nix had three hits, including a tiebreaking double in the sixth inning, to lead Cincinnati over Cleveland.

Nix bounced back from the previous game, when he got his glove to the ball but could not prevent a grand slam homer that completed Atlanta's comeback from a seven-run deficit in the ninth inning.

Jonny Gomes and Brandon Phillips also homered for the Reds.

Shin-Soo Choo homered twice, had three hits and three RBIs for the Indians, who have lost five straight and fell to a season-worst 10 games below .500.

Cincinnati starter Bronson Arroyo (4-2) allowed four runs in 6 2-3 innings and won his third straight start.

In Kansas City, Jose Guillen hit two home runs and drove in three runs for Kansas City in the victory over Colorado, giving the Royals their first three-game streak of the season.

Guillen has homered in three straight at-bats. After being hit by a pitch in the second, he hit a two-run homer with two outs in the fourth.

Guillen led off the seventh with his 11th home run, which is two more than he hit last season, for his 1,500th career hit. It was his 14th multihomer game and the second this season.

Kansas City starter Brian Bannister (3-3) gave up three singles in the second, but allowed only one hit over the next five innings.

In Washington, David Hernandez ended a run of 16 straight starts without a victory, guiding Baltimore past Washington.

Hernandez (1-5) allowed only one hit in 5 1-3 innings. He had lost 11 straight decisions dating back to last season — the second-longest dry spell in Orioles history.

Adam Jones broke out of a lengthy home run drought for Baltimore, while back-up catcher Craig Tatum had two hits and two RBIs for the Orioles, who took an early 4-0 lead.

Willie Harris homered for the Nationals, who have lost seven of eight to fall under .500 for the first time since April 15.

Nationals starter Scott Olsen (2-2) allowed four runs in three innings before leaving with left shoulder tightness.