The win snapped a four-game losing streak that matched the Marlins' longest of the year. It also kept Florida 2 1/2 games behind the Astros with two weeks to go.
Six Philadelphia pitchers gave up 16 hits and nine walks. Rookie starter Eude Brito (1-1) lasted only 2 1-3 innings. Reliever Robinson Tejeda was hit the hardest, giving up four runs without recording an out.
Jimmy Rollins tripled in the seventh to extend his career-best hitting streak to 24 games, the longest by a Phillies player since Willie Montanez hit in 24 consecutive games in 1974. The triple also gave Rollins double-digits in stolen bases, doubles, triples and homeruns.
Florida's Mike Lowell hit a two-run homer in the eighth, his seventh of the year and his first since August 1. He hit 27 last season. Jeff Conine went 3-for-3, walked three times and drove in two runs.
Miguel Cabrera had a two-run single and two-run double for the Marlins, who ended a stretch in which they went 1-for-25 with runners in scoring position. Cabrera broke the team record for total bases in a season with 327, surpassing Gary Sheffield's 324 in 1996.