MIAMI -- Henderson Alvarez was a bit rusty. That didn't last long.
"He did a great job today and he's a unique player for sure," Marlins manager Mike Redmond said. "This guy competes and the beauty of Hendu is that, and I hope and think this is true, he's realized how good he is this year. This guy has great stuff and you saw that tonight."
Alvarez (9-5) allowed one run and five hits while striking out six after being reinstated from the 15-day disabled list with right shoulder inflammation. He lowered his home ERA to a National League-best 1.46 among qualifiers.
"I'm just thankful that everything went well today and I was able to go out there and help my team," Alvarez said. "We're in the middle of the (playoff) hunt so this is an important stretch for us."
Alvarez threw 58 of 89 pitches for strikes. Two offerings were his Eephus pitch -- one registered 58 mph on the radar gun -- before he was pulled after the seventh inning.
"Chuck (Hernandez) and I sat there and, believe me, we fought the urge to throw him back out there for the eighth, but decided that he did his job and knowing that was his first start back after being a little bit sore was the right thing to do," Redmond said.
Steve Cishek pitched the ninth for his 31st save in 34 opportunities.
The Diamondbacks made five errors, their most since recording six on July 3, 2010, against the Dodgers.
"Through all the mistakes we battled and we only gave up two runs, one unearned and one earned," Diamondbacks manager Kirk Gibson said.
Wade Miley (7-9) struck out nine in seven innings for Arizona. He allowed two runs -- one earned -- and four hits.
"It's a little frustrating, but that's baseball," Miley said. "Alvarez threw a great game."
The Marlins scored the go-ahead run in the seventh inning on the Diamondbacks' fifth error. Shortstop Cliff Pennington's throw home on a grounder went wide of catcher Miguel Montero, allowing Marcell Ozuna to score from third base. Ozuna moved into scoring position after a dropped pick-off attempt by first baseman Mark Trumbo.
Trumbo's sacrifice fly gave the Diamondbacks a 1-0 lead in the first, but Alvarez was able to escape further damage after the first three batters singled. Ozuna, the center fielder, threw out Ender Inciarte at home to help.
Arizona racked up three errors in the second inning, but the Marlins were unable to take advantage of the miscues. It was the first time in nearly four years a team (Oakland on Aug. 24, 2010) committed three errors in an inning without allowing a run.
Jeff Baker hit an RBI triple in the fourth for the Marlins.
Diamondbacks: SS Chris Owings (left shoulder strain) will begin a rehab assignment with the Arizona League (rookie) Diamondbacks on Sunday and the plan is for him to play for Triple-A Reno on Friday. ...
CF A.J. Pollock (right hand surgery) will begin hitting on Monday.
Marlins RHP Tom Koehler (8-9, 3.86) takes the hill in Sunday's series finale against Diamondbacks RHP Josh Collmenter (8-6, 4.09). Koehler has allowed eight runs in nine innings over two starts, both losses, against the Diamondbacks. Collmenter is 0-1 with a 7.71 ERA over his last three starts.
Redmond has decided to start RHP Jarred Cosart on Tuesday and RHP Nathan Eovaldi on Wednesday in a two-game set with the Texas Rangers. With two off days next week, the Marlins will not need a fifth starter until Aug. 24 and a decision has not been made whether LHP Brad Hand or RHP Brad Penny will assume that role.
Inciarte's career-long 16-game hitting streak is the longest active streak in the National League. He is hitting .314 (22 for 70) during that stretch. ... Trumbo also continued his streak of reaching base safely in 15 consecutive games, which is the second-longest streak of his career.