Lefty Travis Wood, who earned the win, pitched six innings, giving up two runs on three hits with five strikeouts. Righty Alex Sanabia took the loss for the Marlins, surrendering six hits and three runs over 6 2/3 innings.
"Travis is the kind of guy who'll go out and challenge them," said Cubs manager Dale Sveum. "He gave up a couple of home runs, but other than that, he was as good as he's been."
The Cubs received another strong performance from what has been a sparkling bullpen. Kameron Loe, James Russell and Carlos Marmol combined for two scoreless innings before Kevin Gregg came in to close for the second consecutive night. The Marlins fell in order in the ninth, just as they did the night previously, and Gregg earned his third save of the season.
The Marlins nearly tied it in the eighth, as Austin Kearns came to bat with runners on first and second. Starlin Castro made a diving stop to cut off Kearns' grounder and got the force at second as the Cubs escaped the jam.
"This is the big leagues. Big plays in big situations," said Sveum. "They're what you need all the time in close, one-run ballgames. We had a couple of them tonight, and that was the difference -- great plays."
In the seventh, Welington Castillo reached first on a popup that dropped among three Marlins fielders in shallow right and advanced to second when Julio Borbon drew a pinch-hit walk off reliever Mike Dunn. DeJesus then singled in Castillo for a 3-2 lead.
The offense slowed in the middle innings, as only two runners moved into scoring position. Luis Valbuena doubled to right field in the fifth, narrowly beating the throw to second. He was stranded as Barney popped out and Wood struck out to end the inning.
The Cubs also threatened in the sixth. Castro singled to left and reached second as Anthony Rizzo walked, but Alfonso Soriano and Nate Schierholtz were unable to drive them in.
After scoring all four of their runs Friday night in the first three innings, the Cubs were again at it early. In the second, Schierholtz doubled to left field and scored on a single up the middle by Valbuena.
Schierholtz leads the Cubs in average, batting .313, and made a phenomenal diving catch in the sixth to rob Giancarlo Stanton of a hit.
"It's good. Everybody works together," said Castro of the defense. "That's why we're winning games. It's the group."
The Marlins kept pace in the second as Miguel Olivo homered, sending it 398 feet into left field to even the score at 2.
DeJesus led off the game by doubling deep into the right-field corner and going to third on an error by Stanton, who misplayed the ball. Sanabia then threw a wild pitch to Castro, allowing DeJesus to score the first run.
However, the Marlins evened it up in the bottom half of the inning, as Stanton crushed a homer over the scoreboard in left field. The 472-foot blast was his first of the season and the longest home run hit by a Miami player in Marlins Park history.
"Here I've hit a few of those foul, so [it's] finally good to get it on the right side of the pole," said Stanton.
"It was something to see. I threw a pitch that didn't end up where I wanted it to and he did everything he could to hit it as far as he could," said Wood. "Normally I do not like watching them, I get mad. But as soon as he hit that, I knew it was going to go a ways. So I watched that one."
The Cubs look to continue their winning streak and take home their first series sweep of the season Sunday.
"We had a tough time [here] last year. When things started snowballing out of control last year, it was in this place," said Sveum. "It'd be nice going home with a four-game [winning] streak and five out of six."