PHILADELPHIA — Kyle Lohse outpitched Roy Halladay, and the St. Louis Cardinals held off the Philadelphia Phillies 4-3 Monday night to gain ground on Atlanta in the NL wild-card chase.

Lance Berkman homered and had an RBI single for the surging Cardinals, who moved within 21/2 games of the wild card-leading Braves.

St. Louis, which took three of four in the series, has won 10 of 12 overall.

Despite the loss, the NL East champion Phillies clinched home-field advantage throughout the postseason when Milwaukee lost to the Chicago Cubs.

MARLINS 6, BRAVES 5: At Miami, the sliding Braves stumbled again, losing to Florida on Omar Infante's two-run homer off Craig Kimbrel with two outs in the bottom of the ninth. Atlanta has dropped three of four.

Kimbrel came in with a 5-4 lead and retired the first two batters he faced in the ninth. But Emilio Bonifacio then hit a chopper to third baseman Chipper Jones, who could not come up with the infield hit.

Infante drove a 1-0 pitch to left for his first game-ending homer. His sixth homer of the season came against his former team and handed Kimbrel (4-3) his seventh blown save in 52 chances. Dan Uggla and Jason Heyward homered for Atlanta, which scored four runs in the seventh to take the lead. Infante had a costly error at second base in the inning, allowing the Braves to score the tiebreaking run. Mike Stanton homered twice for the Marlins and Logan Morrison added a two-run shot.

CUBS 5, BREWERS 2: At Chicago, Geovany Soto hit a pair of two-run homers and drove in all of Chicago's runs in a victory over Milwaukee. The Brewers are looking for their first division title in 29 years. The Cubs snapped a six-game losing streak to the Brewers. All three of Soto's two-homer games have come against Milwaukee. Carlos Marmol gave up a solo homer to Casey McGehee in a shaky ninth.

ASTROS 3, REDS 2: At Cincinnati, Matt Downs hit a tiebreaking homer in the eighth inning and Houston beat slumping Cincinnati. Downs greeted Nick Masset (3-6) with a leadoff drive to left, sending the Astros to their second straight win after a three-game skid. Six Houston pitchers combined for a four-hitter. Brandon Phillips hit a leadoff homer in the first for Cincinnati, which has lost four straight.

DIAMONDBACKS 1, PIRATES 0: At Phoenix, Ian Kennedy pitched eight dominant innings to become the NL's first 20-game winner, Justin Upton hit a broken-bat homer and the Diamondbacks moved a step closer to their first NL West title in four years. Kennedy (20-4) allowed one hit, walked one and tied his career high with 12 strikeouts to become the fourth Diamondbacks pitcher to reach 20 wins.

PADRES 8, ROCKIES 2: At Denver, Cory Luebke took a no-hitter into the sixth inning, Cameron Maybin and Aaron Cunningham homered for the Padres. Mark Ellis homered for Colorado's only hit of the game. The Rockies have lost five straight and six of seven. Maybin, Cunningham and Jason Bartlett had two hits each for San Diego, which has won three of four. The Padres have never thrown a no-hitter in their 43-year history, but Luebke (6-9) took a run at it before Ellis connected for a two-run shot with two outs in the sixth.