Cody Ross hit a solo home run and Wes Helms added a tying sacrifice fly in the eighth inning, helping the Florida Marlins rally past the Arizona Diamondbacks 5-4 on Friday night.
It spoiled a 13-strikeout performance by Arizona's Randy Johnson, who pitched seven strong innings but was denied career victory No. 295.
The Diamondbacks maintained a two-game lead over Los Angeles in the NL West but missed a chance to stretch the lead to three games after the Dodgers lost in Philadelphia.
Arizona's Stephen Drew hit a tying RBI single in the seventh and Chris Young added an RBI double off the wall in left to give the Diamondbacks a 4-3 lead. That would have put Johnson in the win column, but the Marlins struck when Jon Rauch (0-2) replaced Johnson in the eighth.
Josh Willingham led off with what appeared to be a home run, but it bounced off left fielder Connor Jackson's glove as he dropped back to the wall, then hit a bar and fell back into play on the slumped Jackson.
The ruling was a triple, and Willingham scored easily when Helms drove the ball deep into left for a sacrifice fly. Florida led 5-4 after one more pitch, when Ross, who hit a two-out RBI double in the fourth, drove it into the left-field stands for his 18th homer.
Arizona threatened in the bottom of the eighth. Miguel Montero and Augie Ojeda each hit one-out singles, but pinch-hitter Alex Romero lined a shot off the pitcher's mound that second baseman Dan Uggla flipped to begin a double play.
Arthur Rhodes (1-0) got two outs in the seventh to earn the win, his first in the NL after a July 31 trade from Seattle. Kevin Gregg pitched a perfect ninth for his 28th save in 35 chances.
Florida starter Anibal Sanchez hadn't faced the Diamondbacks since throwing a no-hitter against them on Sept. 6, 2006. But he allowed a single to the first batter he faced and gave up five hits by the time Arizona took a 2-0 lead.
He settled down and retired 15 of the next 17 batters through the following 4 1-3 innings. Sanchez wound up pitching 6 1-3 innings, allowing eight hits and four runs. He had seven strikeouts, walked one and hit two batters.
Sanchez left after Drew and Young put Arizona up 4-3, when manager Fredi Gonzalez called for Rhodes. He intentionally walked Jackson to load the bases with one out for Adam Dunn, who'd been batting .194 against lefties.
Rhodes found the corner on a called third strike to retire Dunn, then got Chad Tracy to fly out to center.
It spoiled a big night by the Big Unit. Johnson allowed five hits and three runs, two earned, with an intentional walk. It was his 212th game with at least 10 strikeouts, ranking second all-time behind Nolan Ryan (215).
Twice this season Johnson had 10-strikeout efforts _ May 24 in a loss at Atlanta and during a July 6 win at San Diego.
Notes:@ The 44-year-old Johnson threw the most strikeouts since he had 15 on Aug. 31, 2004, in a 4-1 loss to the Dodgers. His 116 pitches were his most since throwing 129 on July 19, 2006, against Seattle. ... The Marlins are 6-1 against the Diamondbacks this season. ... Arizona RHP Brandon Webb was sore after being hit by a liner just below his rib cage while earning his 19th win Thursday. He throws a regular bullpen session Saturday. ... Marlins LHP Andrew Miller (patella tendinitis) pitched 5 2-3 innings on a rehab assignment at Double-A Carolina. He gave up two hits and two runs, and makes another start for Carolina next week. ... Florida outrighted RHP Justin Miller to Triple-A Albuquerque.