Tom Mihalek, Associated Press t-->
Florida's Hanley Ramirez beats the throw to the Phillies' Carlos Ruiz to score in the Marlins' 8-2 win.

PHILADELPHIA — Josh Johnson pitched six scoreless innings, Jeremy Hermida drove in four runs and the Florida Marlins beat the Philadelphia Phillies 8-2 Tuesday night in a matchup of the two top teams in the NL East.

The Marlins, who have by far the smallest payroll in the majors, closed within 1 1/2 games of first-place Philadelphia. The New York Mets are two games behind.

Johnson (2-0) allowed five hits and overcame four walks in his fifth start since returning from reconstructive elbow surgery in August 2007. The Marlins improved to 5-0 in his starts this year.

Jamie Moyer (10-7) fell to 10-1 against the Marlins. The 45-year-old left-hander uncharacteristically struggled with his control. Moyer gave up two runs and six hits in five innings. He walked three and hit two batters.

Shane Victorino hit a two-out, two-run homer off Renyel Pinto to cut the deficit in half in the seventh.

BREWERS 8, REDS 1: At Cincinnati, Prince Fielder made amends by apologizing, then hit a two-run homer that helped Milwaukee beat Cincinnati and quickly move beyond their ugly altercation in the dugout. The Brewers were on their best behavior a day after Fielder shoved pitcher Manny Parra in the dugout during a series-opening loss.

CUBS 11, ASTROS 7: At Chicago, Alfonso Soriano hit a tiebreaking, three-run homer in the seventh inning and the Cubs rallied after blowing a five-run lead. Soriano's 20th homer highlighted a five-run burst and sent the NL Central-leading Cubs to their eighth win in 10 games.

METS 6, PADRES 5: At New York, Fernando Tatis homered twice and drove in four runs, giving the Mets' mix-and-match bullpen enough breathing room to close out San Diego without injured Billy Wagner.

DIAMONDBACKS 3, PIRATES 1: At Phoenix, Brandon Webb became the first 16-game winner in the majors, tossing a nine-hitter for his third complete game for Arizona.

ROCKIES 8, NATIONALS 2: At Denver, Brad Hawpe's bases-loaded, two-run single in the bottom of the eighth sparked a six-run rally and Colorado rallied to beat Washington.

Manny Corpas (2-3) pitched one inning in relief of Jorge De La Rosa, who struck out six in seven innings, and Ian Stewart hit his fifth home run of the season for the Rockies.

CARDINALS 6, DODGERS 4 (11): At St. Louis, Ryan Ludwick hit a two-run home run in the 11th inning off Jason Johnson, a starter called into duty, to give the Cardinals a victory over Los Angeles Dodgers.

BRAVES 11, GIANTS 4: At San Francisco, Mike Hampton earned his first victory in nearly three years and hit an RBI double, leading Atlanta past San Francisco.

American League

RED SOX 8. ROYALS 2: At Kansas City, Mo., Jason Bay had four hits and two RBIs and Josh Beckett pitched effectively into the seventh inning to help the Boston Red Sox beat the Kansas City Royals. Beckett, 0-3 with a 5.31 earned run average while allowing 29 hits in 20 1/3 innings in his previous three starts, held the Royals to four hits and two runs in 6 2-3 innings. He struck out seven and walked two.

Beckett (10-8) gave up an RBI double to Mark Teahen in the first, and after Alex Gordon led off the second with a single, Beckett retired 16 of the next 17 he faced. He improved to 3-0 in five career starts against Kansas City.

RANGERS 8, YANKEES 6: At Arlington, Texas, Josh Hamilton hit his 27th homer, rookie Matt Harrison pitched into the seventh inning and Texas hung on to beat New York. The Yankees lost their second straight to the Rangers, have dropped seven of 10 and fell 6 1/2 games behind AL-East leading Tampa Bay.

RAYS 8, INDIANS 4: At St. Petersburg, Fla., Evan Longoria, Dioner Navarro and Cliff Floyd homered to help the Rays get the win. Longoria's two-run drive in Tampa Bay's four-run seventh was his 22nd of the season, setting a team record for a rookie. Longoria hit two long drives that landed in foul territory then took a pitch before connecting against Rafael Betancourt.

BLUE JAYS 4, ATHLETICS 3: At Toronto, Kevin Mench singled in the winning run with two outs in the ninth inning and the Blue Jays extended the Athletics' season-long losing streak to eight games. Toronto trailed 3-2 heading into the bottom of the ninth against Oakland closer Huston Street.

WHITE SOX 10, TIGERS 8 (14): At Chicago, Nick Swisher hit a three-run homer with two outs in the bottom of the 14th inning as the White Sox rallied for four runs off Joel Zumaya to beat the Tigers.

RED SOX 8, ROYALS 2: At Kansas City, Mo., Jason Bay had four hits and two RBIs and Josh Beckett pitched effectively into the seventh inning to help the Boston Red Sox beat the Kansas City Royals.

RANGERS 8, YANKEES 6: At Arlington, Texas, Josh Hamilton hit his 27th homer, rookie Matt Harrison pitched into the seventh inning and Texas hung on to beat New York.

RAYS 8, INDIANS 4: At St. Petersburg, Fla., Evan Longoria, Dioner Navarro and Cliff Floyd homered to help the Rays get the win. Longoria's two-run drive in Tampa Bay's four-run seventh was his 22nd of the season, setting a team record for a rookie.

BLUE JAYS 4, ATHLETICS 3: At Toronto, Kevin Mench singled in the winning run with two outs in the ninth inning and the Blue Jays extended the Athletics' season-long losing streak to eight games.

ORIOLES 3, ANGELS 0: At Anaheim, Calif., Chris Waters held the team with baseball's best record to one hit over eight innings in his major league debut, and Baltimore beat Los Angeles.

MARINERS 8, TWINS 7: At Seattle, Raul Ibanez drove in five more runs and the Mariners rallied in the bottom of the eighth off Twins closer Joe Nathan for an 8-7 win, dropping Minnesota out of first in the AL Central.