Marlins rookie Jordan Yamamoto won with less than his best to stay unbeaten, while the San Diego Padres lost again to reach a new low.
Yamamoto needed 99 pitches to get through five innings but gave up only two earned runs to help Miami win 12-7 on Tuesday night.
The Padres (45-49) lost their fourth consecutive game and fell four games under .500 for the first time this season.
"Definitely not the plan," manager Andy Green said.
Yamamoto (4-0), making his sixth career start, struggled early but got nine outs from the last eight batters he faced. His ERA rose to 1.59.
"The curveball and slider, the money makers in the first five starts, I couldn't really get them over," Yamamoto said. "It definitely was a little eye-opening. I had to kick myself in the butt and say let's go."
The lowest-scoring lineup in the majors gave Yamamoto more than enough help. Brian Anderson hit a three-run homer in the first inning, and Harold Ramirez had two doubles, two RBIs and two runs. Garrett Cooper hit his 11th homer and a two-run single, and Starlin Castro's bases-loaded triple in the sixth made it 11-3.
"We're not a team that is going to hit a bunch of home runs," Anderson said. "Our guys did a really good job of getting pitches out over the plate that we can handle and barrel and drive. It seemed like we always had guys on base and were making it happen tonight."
Padres rookie Logan Allen (2-2), pitching first the first time since July 1 because of the All-Star break, allowed seven runs in 2 1/3 innings.
"Obviously, I had some rust," Allen said. "The command wasn't there. I was battling from pitch one. Just terrible."
Franmil Reyes hit his 26th homer pinch-hitting in the ninth. Manuel Margot hit his sixth homer, but the Padres' comeback bid fell short.
"The attitude and the fight in the dugout were there," Green said. "You dig a hole like that, it's tough to come back from."
Anderson's one-out homer in the first, his 13th, gave the Marlins a quick 3-0 lead, and in the second they added four more runs. Two scored when right fielder Josh Naylor misplayed Ramirez's fly into a two-run double, and Cooper followed with a two-run single.
"Those guys came out swinging," Padres first baseman Eric Hosmer said.
Miami went 5 for 9 with runners in scoring position.
"I have to really thank my offense tonight," Yamamoto said.
A pigeon caused a brief delay during the second inning when it landed on the infield . The bird eluded plate umpire Fieldin Culbreth before first baseman Cooper finally chased it into foul territory.
Marlins: Placed RHP Austin Brice (right forearm flexor strain) on the 10-day injured list retroactive to Sunday, and reinstated RHP Tayron Guerrero (right middle finger blister) from the 10-day IL. Brice's injury is not believed to be serious. ... RHP Pablo Lopez (right shoulder strain) and RHP Drew Steckenrider (right elbow inflammation) continued their rehab by throwing bullpen sessions.
Padres: RHP Chris Paddack (5-4, 2.84 ERA) is scheduled to pitch against his former organization for the first time Wednesday. He was an eighth-round draft choice by the Marlins in 2015, and was traded to San Diego the following year.
Marlins: RHP Trevor Richards (3-10, 4.18) had a season-high eight strikeouts when he beat the Padres on June 2.