PHOENIX -- Brandon Webb had more moxie than command, but he still earned a victory Saturday night.
"I haven't done it in a long time, but I'll take the 'five and dive' this time," Webb said. "My location was terrible, but my curveball got me out and got me a couple of big strikeouts."
Webb, scratched from his last start with soreness in his right forearm, struggled but held on for his fifth win in six decisions. Webb (13-4) allowed three runs and seven hits in five innings with two walks and four strikeouts.
"It felt like I ain't been out there in a month," said Webb, who was pitching on 12 days' rest. "It was a little weird just having that small time off. It felt a little longer than it really was."
Carlos Quentin helped Webb with a bases-loaded triple that capped Arizona's two-out, six-run rally in the fourth inning.
"Two outs and they didn't have a run in, and then they got six runs," said Florida manager Joe Girardi. "We just didn't execute that inning. It's a shame that one inning beat us, but you have to play nine innings."
Arizona remained 2½ games behind the Dodgers with its third win in four games. The Diamondbacks are tied with the Padres, a half-game behind the Reds for the NL wild card.
Dan Uggla hit his 19th home run for the Marlins, who saw their modest two-game winning streak snapped.
With the Diamondbacks trailing 2-0 heading to the bottom of the fourth, Damion Easley and Callaspo hit one-out singles and Webb sacrificed them to second and third. Scott Olsen walked Eric Byrnes to load the basis before Orlando Hudson had an RBI single to make it 2-1. Luis Gonzalez followed with a two-out single, scoring Callaspo and Byrnes to give Arizona a 3-2 lead and Olsen walked Jackson to load the bases for the second time.
Quentin then tripled to the fence in right-center field clearing the bases to put Arizona ahead 6-2.
"I finally was able to see his changeup and made sure my head wasn't moving too much," Quentin said. "He got behind in the count so I decided to wait on a fastball and I got one."
Uggla homered to left in the fifth to make it 6-3.
Josh Willingham led off the eighth with a single off Brandon Lyon and Jeremy Hermida doubled. But Lyon retired Alfredo Amezaga on a grounder before fielding a sharp bouncer back to the mound by Miguel Oliva and catching Willingham halfway down the third-base line.
Willingham was tagged out after a short rundown and pinch-hitter Joe Borchard grounded out to keep Arizona's three-run lead intact.
"We needed it," said Arizona manager Bob Melvin. "When you have a little more rested bullpen you can get results like that."
Olsen (9-6) allowed six runs and a career-high nine hits in five innings. He walked three and struck out three.
"I was behind in the count 70 percent of the time, so I couldn't really go inside on hitters counts and had to leave the ball over the plate," Olsen said "They just went the other way ever single time. The ball found the hole a couple of times and the triple was the best-hit ball of the night."
Olsen made it 2-0 when he drove home Alfredo Amezaga on an RBI ground out.
- SS Stephen Drew was scratched from the Arizona lineup with a sore right hand but is expected to play Sunday.
- Quentin's triple was the first of his career.
- Olsen has lost two straight decisions after posting wins in seven of nine.
- Webb's five-inning stint was his shortest since July 15, 2005 against San Diego, a span of 37 starts.
- Uggla's 19 home runs are second among NL rookies to Prince Fielder's 21.
- Arizona's defense struggled during the first three innings.
- The Diamondbacks have had at least one extra-base hit in 63 consecutive games.
- Dodgers pitcher Brad Penny became the first 13-game winner in the NL early on Saturday.