Ryan Dempster pitched seven crisp innings and the Chicago Cubs beat the Florida Marlins 2-0 on Friday night.

Alfonso Soriano and Geovany Soto each hit an RBI double for the Cubs, who matched their season best with their fourth consecutive victory.

Carlos Marmol worked out of a jam in the ninth to earn his 32nd save in 37 chances, completing the five-hitter. Florida put two runners on with no outs before Marmol retired the next three batters, with shortstop Starlin Castro making a diving catch in short left field to rob Logan Morrison and end the game.

Dempster (14-10) allowed three hits and walked three in his fifth consecutive road victory. He has tossed seven shutout innings in each of his last two starts.

The Marlins' best opportunity to score against Dempster came in the seventh. Mike Stanton reached on a two-base error by Castro to start the inning and moved up on Cameron Maybin's single. Maybin then stole second with no outs.

Dempster responded by retiring the next three batters, including back-to-back strikeouts against Wes Helms and Emilio Bonifacio to end the inning.

Florida put runners on first and second with one out in the eighth, but Sean Marshall got Chad Tracy to hit into a fielder's choice and struck out Stanton to end the threat.

Soriano drove in Soto in the second, and Soto chased Alex Sanabia (4-3) with his two-out RBI double in the sixth.

Sanabia (4-3) allowed four hits and walked three.

NOTES: Marlins All-Star SS Hanley Ramirez was held out due to a sore left elbow. He is listed as day to day. ... Rookie Morrison walked in the first inning to extend his streak of reaching base safely to 36 games. ... Dempster is 7-3 with a 1.90 ERA in his last 14 September starts dating to 2008.