The Marlins completed their opening homestand with a 5-2 record.
"The goal is to try to win every series and we were able to do that," Marlins third baseman Casey McGehee said. "We had a chance to go for a sweep today. We had our chances, but now we have to go on the road and try to keep the momentum going."
Miami got a run back in the bottom of the seventh with Jeff Baker's pinch-hit RBI double.
San Diego's Yonder Alonso had a sacrifice fly in the eighth to extend the lead to 4-2.
It was the first time this season San Diego had scored at least four runs in a game.
"No doubt we've got to get the bats going," Black said. "I've said that repeatedly over the last three to four days. You look at some of those averages and they're obviously a little low. We need those guys to start getting some hits."
Giancarlo Stanton pushed his RBI total to 12 in the fourth with a base hit to drive in Christian Yelich, who tripled to lead off the inning. Stanton already has a career-high RBI total for April.
NOTES: Stanton posted nine RBIs in April in each of the last three years. ... It was the first career pinch-hit home run for Amarista. ... Miami begins a three-game series at Washington on Tuesday, with RHP Henderson Alvarez (0-1, 9.00) facing LHP Gio Gonzalez (1-0, 1.50). . San Diego plays at Cleveland on Monday, with LHP Robbie Erlin (0-0, 0.00) taking the mound against RHP Corey Kluber (0-1, 13.50).