David DeJesus went 2-for-4 and drove in the go-ahead run in the seventh inning as visiting Chicago held on for its third consecutive win.
Chicago's maligned bullpen put together three scoreless innings to save it for starter Travis Wood (2-1), who allowed two runs on three hits over six innings. Kevin Gregg breezed through a 1-2-3 ninth for his third save.
Both Marlins runs came on solo homers - Giancarlo Stanton's estimated 472-foot blast in the first and Miguel Olivo's line-drive shot in the second - as Miami hit multiple home runs in the same game for the first time this season.
Marlins starter Alex Sanabia (2-3) was charged with three runs on six hits over 6 2/3 innings. He exited with the game tied at 2, but DeJesus singled up the middle against reliever Mike Dunn to put the Cubs ahead.
Miami had two on with two out in the eighth against Carlos Marmol, but shortstop Starlin Castro made a spectacular diving stop on Austin Kearns' grounder up the middle and flipped to second to end the inning.
GAME NOTEBOOK: Neither team had won consecutive games entering the series, but the Cubs have claimed the first three games and will try for their first four-game sweep since Aug. 1-4, 2011, at Pittsburgh. … Stanton hit his first home run of the season in his 18th game. He didn't hit his first homer until his 20th game last season and finished with 37. … Wood has gone at least six innings and allowed two runs or fewer in each of his five starts this season.
Distributed by Internet Broadcasting and The Sports Xchange. This material may not be published, broadcast, rewritten or redistributed.