Cabrera drove in four runs; Hanley Ramirez had two hits and three runs; Joe Borchard had two runs, two hits and one RBI; and Miguel Olivo added two hits and two RBI for the Marlins (11-24), have won two straight.
Ramirez, who also had two stolen bases, extended his hitting streak to 11 games.
Winning pitcher Brian Moehler (1-4) gave up two runs and eight hits in 7 1/3 innings with one walk and one strikeout.
Jose Bautista hit his second home run of the season, Freddy Sanchez had one run and three hits, and Jeromy Burnitz had a hit and an RBI for the Pirates (11-27), who have lost three of their last four games.
Losing pitcher Ian Snell (2-3) surrendered seven runs and seven hits in 1 1/3 innings.