SAN DIEGO -- With the exception of one pitch, Greg Maddux was his usual efficient self.
It still wasn't enough for Mad Dog, who's gone 11 starts and nearly two months since winning a game.
"A lot of our pitchers have thrown well and don't have victories to show for it," Padres catcher Luke Carlin said. "It's a tough situation. We've got to put some runs across. A lot of our pitchers' records are the opposite."
Career win No. 351 has been elusive for Maddux, either because of a lack of run support or shots such as the one Cantu hit, or both.
Maddux (3-7) became the ninth big league pitcher to reach 350 victories on May 10. Since then, he's 0-4 with seven no-decisions, even though he's allowed two or fewer earned runs eight times in that streak. San Diego is 6-5 in Maddux's last 11 starts.
The longest winless streak of Maddux's career is 13 starts, May 11-July 14, 1990, with the Chicago Cubs. He allowed one earned run and four hits in six innings.
Maddux left the clubhouse before reporters were allowed in. A team spokesman said Maddux went home to be with his wife and son, who were ill.
"It was a normal outing for him," Carlin said. "He kept us in the game. The ball was down for the most part. He had all of his pitches working. It was just unfortunate we couldn't put more runs across for him."
Facing Maddux, "You know he's going to be sharp so you have to be on top of your game," Nolasco said.
Nolasco (10-4) won his fifth consecutive decision, holding San Diego to one run and five hits in eight innings. He struck out seven and walked none.
"A big game for Ricky," manager Fredi Gonzalez said. "He was good. We scored enough runs and he made it hold up."
Nolasco might have recorded his first career complete game, but was pinch hit for in the ninth when the Marlins tried to add an insurance run. The Marlins had a runner on first and two outs when his spot came up. The Marlins didn't score.
"I felt good, but I understand if we could get another run, it helps the team," Nolasco said. "All that matters is that we got a win."
Kevin Gregg pitched a perfect ninth for his 16th save in 22 chances.
Hanley Ramirez of the Marlins doubled in the sixth to extend his hitting streak to a career-high 14 games.
Gonzalez was ejected by Joe West after the umpires took a run off the board in the seventh. With two outs, Alfredo Amezaga on first and the Marlins leading 2-1, Ramirez hit a line drive past third baseman Kevin Kouzmanoff down the left-field line. After jumping out of the way of the ball, third-base umpire Chris Guccione ruled it fair. The ball caromed off the wall and into left field, with Amezaga scoring from first and Ramirez pulling into second.
Padres manager Bud Black came out to argue with Guccione, who then huddled with the other three umps. After a few minutes, they ruled it a foul ball. Gonzalez came out to argue, but hadn't even reached the third-base line when West, the crew chief and second-base umpire, held up his hand as if he didn't want to hear from the manager. A few seconds later, West threw him out.
Ramirez then grounded out to third to end the inning.
Cantu homered to left with one out in the fourth, his 16th. Luis Gonzalez was aboard on a fielder's choice.
"Maddux paints his spots," Cantu said. "I was just trying to make contact off him. He's the kind of guy you have to locate his ball and hit it because it moves so much."
San Diego pulled to 2-1 when rookie Chase Headley hit a towering homer to right on Nolasco's first pitch of the fifth. It was Headley's fifth.
The Marlins made it 3-1 in the eighth when Josh Willingham's groundout brought in Robert Andino. He came in to pinch run after Gonzalez hit a leadoff double.
Marlins C Matt Treanor left the game in the ninth after aggravating a lower abdominal strain sustained in a series at Oakland in late June. Treanor was hit on the right foot by Amezaga's infield single and appeared to grab his abdomen after trying to jump out of the way of the ball. ... Amezaga had three hits. ... Marlins RHP Josh Johnson, who hasn't pitched in the big leagues since July 4, 2007, will be activated on Thursday and start against the Los Angeles Dodgers. He underwent reconstructive elbow surgery on Aug. 3. ... Maddux is 19-15 lifetime against the Marlins. The 19 wins are the most by any pitcher against Florida. ... Padres C Josh Bard, on the DL since May 22 with a sprained ankle, took batting practice. "I think we're getting close," said Bard, who was hurt when Albert Pujols slid into home on May 21. Pujols reached base that inning when his line drive hit right-hander Chris Young in the face, breaking his nose.