Cards pound Braves, keep pace
Cardinals 12, Braves 3
ATLANTA -- Albert Pujols drove in three runs, Braden Looper won for the first time in six starts and St. Louis beat injury-riddled Atlanta.
Joe Mather went 3-for-4 with a homer and two RBIs for St. Louis, which had lost six of seven. Ryan Ludwick also drove in two runs.
The Braves, struggling to stay in contention in the NL East, lost their third straight game on the same day they placed Chipper Jones, who leads the majors with a .369 average, and Tim Hudson, their No. 1 starter, on the disabled list.
Rookie Charlie Morton (2-4), recalled from Triple-A Richmond because of Hudson's elbow injury, lasted only 3 2-3 innings. The right-hander gave up eight runs and seven hits.
Looper (10-8) allowed two runs and seven hits in seven innings, winning for the first time since an 8-4 victory at Detroit on June 24.
Marlins 7, Mets 3
MIAMI -- Dan Uggla and Cody Ross hit RBI singles to spark a five-run eighth inning, and Florida rallied for the win.
With their 31st come-from-behind win, most in the National League, the Marlins closed within a game of NL East-leading New York. Second-place Philadelphia is a half-game out of first.
Adding to the Mets' gloom, starter John Maine left the game after 4 1-3 innings because of a stiff shoulder, and he'll return to New York for tests.
With Florida trailing 3-2, Josh Willingham led off the eighth with a double against Joe Smith (1-3), and Uggla followed with a tying single. Uggla took third when pinch-hitter Wes Helms singled off Scott Schoeneweis, and Ross followed with a base hit to put the Marlins ahead.
Doug Waechter (3-2) got the win, and Kevin Gregg pitched a perfect ninth.
Pirates 8, Rockies 4
PITTSBURGH -- Ian Snell won for the second time in 18 starts, Nate McLouth homered and Pittsburgh rallied to snap Colorado's five-game winning streak.
Ryan Doumit and Doug Mientkiewicz each had three hits and two RBIs for the Pirates, who had lost three straight.
Pittsburgh also took advantage of nine walks to beat Colorado for the first time in five games this season. The Rockies had won nine of 10 since the All-Star break.
A two-run homer by Matt Holliday in the first and an RBI single from Willy Taveras in the second staked Colorado to a 3-0 lead. But after Taveras' hit, Snell (4-8) retired 14 of the final 17 hitters he faced.
Jason Grilli (1-2) gave up a two-run double to Doumit, an RBI single to Mientkiewicz and a sacrifice fly by Steve Pearce in the fifth.
Astros 5, Reds 4
HOUSTON -- Roy Oswalt came off the disabled list and beat Cincinnati again, striking out five in Houston's win.
Oswalt (8-8) won his fifth straight start against the Reds and improved to 20-1 in 25 career outings against them, despite giving up a grand slam to Adam Dunn.
The Houston ace threw 74 pitches in five innings in his first start since aggravating a left hip injury on July 11. He went on the DL on July 19 and was activated for Monday's start.
Geoff Blum hit his third homer in two days and Jose Valverde pitched a perfect ninth to earn his 27th save. The Astros' bullpen allowed one hit in four scoreless innings as Houston beat Cincinnati for the seventh straight time.
Johnny Cueto (7-10) gave up five runs and eight hits for the Reds, who've lost four in a row and six of their last eight.
American League
Angels 7, Red Sox 5
BOSTON -- Casey Kotchman and Torii Hunter homered in a six-run sixth inning and the Los Angeles Angels improved baseball's best record with a 7-5 win over Daisuke Matsuzaka and the Boston Red Sox on Monday night.
Kotchman's two-run homer gave the Angels a 3-2 lead. Hunter's three-run shot drove Matsuzaka (11-2) from the game and equaled the total number of runs he had allowed in his previous five starts. Matsuzaka hadn't given up a homer in any of those games.
Manny Ramirez singled home the Red Sox first two runs and homered off Francisco Rodriguez for the last run in the ninth. It was his 20th homer, making him the eighth player in baseball history to hit that many in 14 consecutive seasons.
The Angels won their sixth straight over the Red Sox, including a three-game sweep in Los Angeles from July 18-20.
Jered Weaver (9-8) allowed three runs in 5 1-3 innings in his first start since last Wednesday when he left after three innings with tightness in his middle back.