PHOENIX -- A visit to the eye doctor on Tuesday has Cody Ross seeing clearly again.
Ross's pinch-hit, three-run home run in the eighth inning broke a shutout and propelled Arizona to a 3-1 victory over the Marlins on Wednesday afternoon.
His heroics came a day after he spent three hours at a doctor's office attempting to correct a vision issue that had bothered him off-and-on all season.
"To be honest with you, I was going up there with blurry vision half the time I was at the plate," Ross said. "It's hard enough to hit in this league when you have good vision.
"You don't want to make excuses, but it's a true story. It was tough."
Ross said he could not keep his contacts moist and was going through a vial of eye drops a game.
"I've played most of my career on the East Coast," Ross said. "I've always noticed when I've come out on the West Coast it's a little different as far as irritation goes, but it was nothing that I really worried about. Here lately I was concerned. My dad was suggesting I should get Lasik (surgery)."
Ross' third homer of the season and fifth pinch-hit homer of his career, spoiled a strong start by Marlins' 20-year-old rookie Jose Fernandez and helped the D-backs (39-33) to their second straight victory after a four-game losing streak.
Fernandez gave up three hits, none after reliever Josh Collmenter's infield single to lead off the third, but was removed with one out in the eighth after walking Jason Kubel and Didi Gregorius.
Ross hit a 1-2 pitch from left-hander Mike Dunn for the game-winner. He was hitting for Eric Hinske, who had been announced before the pitching change. Ross is hitting .387 against lefties this season.
"It was a slider down and in, and it was probably a slider for a strike and not a chase pitch with it being a 1-2 count," Dunn said.
"I got a favorable matchup, and he hit the ball out of the ballpark," D-backs manager Kirk Gibson said. "When you get in a ballgame like this, you just hope you can hold them to zeroes."
David Hernandez (4-4) pitched a scoreless eighth inning and Heath Bell gave up a leadoff home run to Justin Ruggiano in the ninth before leaving runners on first and second for his 13th save. Ruggiano had two of the Marlins' five hits.
Fernandez (4-4) had retired 14 in a row before walking Kubel to open the eighth inning.
"He's a monster out there, man. He's 20 years old and this kid, he brings it every time. It's fun to watch him, frustrating that we couldn't get him a couple of runs. He's special. Special," Florida manager Mike Redmond said.
The Marlins (22-49) have lost two in a row after winning six of their previous nine. They have the worst record in baseball.
Collmenter gave up a single and a walk in six innings of relief after replacing starter Trevor Cahill in the second inning.
Collmenter retired 13 in a row after issuing a two-out walk to Greg Dobbs in the second. He struck out seven.
"He had the magic wand out there. He got rolling," Gibson said.
Cahill was removed with a right hip contusion in the top of the second inning after being struck by a Marcell Ozuna line drive on the final out of the first. The ball struck Cahill and ricocheted to third baseman Martin Prado, who threw out Ozuna at first. Cahill threw three pitches to Derek Dietrich in the second before leaving.
"I couldn't really push off that much. Stride was a little bit shorter," Cahill said. "I was using more arm. I felt like I could have pitched through it, but this early in the year, there is a lot of risk of changing my arm slot or something."
The D-backs already are down two starters, with Brandon McCarthy on the disabled list with right shoulder soreness and Ian Kennedy three days into his 10-day suspension for his part in a June 11 brawl against the Los Angeles Dodgers.
NOTES: Because of an off day Thursday, Cahill will have an extra day to recover before his next scheduled start June 25 at Washington, which is the first game of a 19-game, 19-day trip that includes stops in Atlanta and New York to play the Mets. ... Marlins left fielder Juan Pierre will take a 14-game hitting streak into a four-game series at San Francisco after receiving a day off Wednesday. Pierre has eight multiple-hit games during his streak. ... Marlins right-hander Tom Koehler, who joined the rotation May 12, will start against the Giants on Thursday in search of his first major league victory. Koehler gave up nine runs in 4 ? innings in a 13-7 loss to St. Louis last Saturday. ... Collmenter became the first reliever in Arizona history to have four outings of at least four innings in one season. He pitched 5 1/3 innings against St. Louis on April 3 and four innings against the Cardinals on June 4, winning in extra innings both times.