MIAMI -- Zack Greinke had a good night on the mound, at the plate and covering first base.
Greinke pitched seven innings, singled for his second hit of the year and finished a pivotal 3-6-1 double play, helping the Arizona Diamondbacks rally to snap the Miami Marlins' four-game winning streak by beating them 3-2 Thursday.
Greinke fell behind 2-0 in the third, and with two on and one out in the fourth, he helped turn an inning-ending double play , taking a relay throw from shortstop Nick Ahmed to keep the score close.
"I was kind of worried I wasn't going to be able to catch it because I had a bad jump getting over there, but I made the play," Greinke said. "That was big. That kept us in the game good."
Greinke (7-3) allowed two runs, one earned , and moved into a tie for the NL lead in victories. He improved to 5-0 in nine games against the Marlins.
"I'll take that," he said. "Their team is pretty good right now. Some years it hasn't been the best team."
The Marlins said there was no shame in losing to the three-time All-Star.
"Zack Greinke is tremendous," Miami left-hander Jeff Locke said. "The little that he does give you, you really have to take advantage of it, because that guy stays out there and does his job as good as anyone in baseball."
Archie Bradley struck out Marcell Ozuna with two on to end the eighth. Fernando Rodney completed a five-hitter by pitching a perfect ninth for his 14th save.
Rodney blew a save in Wednesday's 14-inning win at Pittsburgh, and manager Torey Lovullo said the marathon may have had a lingering effect.
"There were some things that made me think we were a little hung over from yesterday's long game," Lovullo said, "but we came through when we needed to."
The comeback win was the 19th for the Diamondbacks, who are 10-5 in one-run games. They won for the 13th time in the past 17 games.
Diamondbacks center fielder Gregor Blanco left the game in the fourth inning with a jammed left thumb . He'll be re-evaluated Friday, and his status is day to day.
Greinke was 1 for 25 this year before he singled in the sixth and scored Arizona's first run.
"One hit -- it's too early to start feeling too good," he said.
Ahmed had three of Arizona's six hits, including a two-run single in the eighth to put the Diamondbacks ahead.
Locke allowed one run in 5 2/3 innings in his season debut for Miami.
"I felt like a little kid," Locke said. "For the most part, it went just the way I'd like it to go."
The Miami bullpen couldn't hold the lead. It was 2-1 when Kyle Barraclough (1-1) walked the first two batters in the eighth. The right-hander has given up 21 walks in 22 1/3 innings this season.
Following a sacrifice, Ahmed singled off Brad Ziegler.
Giancarlo Stanton's two-out RBI single in the third helped give the Marlins a 2-0 lead. The RBI was the 578th for Stanton, tying him with Mike Lowell for the franchise record.
When 270-pound Justin Bour swiped second base in the fourth, it was the first steal of his four-year career.
"I know, I know. Don't rub it in," Greinke said with a slight smile. "I wasn't ready for that. That was disappointing."
RHP Taijuan Walker (blister) had his bullpen session postponed until Friday. If he goes well, he's expected to start Sunday.
Before the game, Arizona optioned RHP Zack Godley to Triple-A Reno and recalled RHP Silvino Bracho. Locke was reinstated from 10-day DL.
LHP Patrick Corbin (4-5, 5.14) is scheduled to start Friday for the Diamondbacks against Jose Urena (3-2, 3.14). The Marlins have scored 20 runs in Urena's past two starts, and he won both.