MIAMI -- A day after celebrating his 25th birthday, Paul Maholm pitched one of his best games of the season.
"I was getting ahead with everything," Maholm said. "I was mixing my speed. They swing the bats, they're aggressive and I was kind of playing off of that, getting them to hit my pitch and not having to just groove one for them."
Maholm (4-10) gave up a single and walk to the first two batters before settling into a groove. He retired 15 straight batters at one point. He gave up three hits and two runs before leaving in the eighth inning.
"He pitched some good games where he was an unfortunate loser, but from a command standpoint this is what he's capable of," Pittsburgh manager Jim Tracy said.
Shawn Chacon got the final out of the inning before Matt Capps pitched the ninth for his sixth save.
Dontrelle Willis (7-7) allowed three runs and seven hits in seven innings. It was his first start since leaving in the first inning with tightness in his left forearm on June 19.
"For me, it might have been his best outing of the year," Florida manager Fredi Gonzalez said. "He was outstanding."
He suffered his fifth straight loss -- the longest of his career.
"I am throwing the ball good," Willis said. "There is nothing really I can do. Besides the game in Chicago, I am giving up three runs, two runs. I was feeling worse when I was giving up five, six runs in the first month winning games, selfishly."
The Pirates hit four straight singles to begin the second inning including an RBI hit by Jack Wilson scoring Xavier Nady. A sacrifice fly by Rajai Davis scored the recently acquired Josh Phelps to give the Pirates a 2-1 lead.
Dan Uggla hit his 16th home run in the third inning just inside the left-field foul pole. Uggla's 443-foot solo shot tied the game 2-2 and was his fourth in his last six games.
"This season has been so up and down for me, I am just trying to level it out to where I can be more consistent," Uggla said. "But don't get me wrong, I'm not trying to discourage any of these hot streaks I have been on."
Wilson responded in the top of the fourth with a solo home run to give the Pirates a 3-2 advantage. The home run came on a sinker that Willis left up in the zone.
"With their lineup, they can score a lot of runs," Wilson said. "At that point, it made it 3-2 but Paul just took it over from there and made it his own. It was fun to watch."
Florida took a 1-0 lead in the first inning on Miguel Cabrera's sacrifice fly.
Marlins rookie centerfielder Brett Carroll recorded his first career hit at Dolphin Stadium with a single in the first inning. ... Freddy Sanchez went 1-for-4 against Willis and now has a career batting average of .588 (10-for-17) against the left-hander. ... The two teams withstood a heavy rainfall early in the game chasing the fans from their seats avoiding a delay in the game. ... The two-hour and 15-minute game was the second shortest of the season for the Marlins.