Ken Griffey Jr. hit a pinch-hit, two-run homer in the eighth inning and Rob Johnson drove in Chris Woodward with the go-ahead run to give the Seattle Mariners a dramatic 4-3 victory over the Arizona Diamondbacks on Friday night.

Jon Garland pitched seven scoreless innings against the major leagues' lowest-scoring team, and appeared on his way to his first win in a month _ until the Mariners scored four times off two relievers in their four-run eighth inning.

Miguel Batista (4-2) pitched a scoreless eighth for Seattle, and David Aardsma struck out the side in the ninth for his 13th save in 14 chances. He set down Miguel Montero for the final out with Eric Byrnes at second base.

Scott Schoeneweis replaced Garland in the eighth and allowed a solo homer to Russell Branyan, who had returned after attending the funeral of his grandfather in Georgia. Tony Pena (5-3) entered and allowed a single to Adrian Beltre, who reached third before the 39-year-old Griffey came to plate on his scheduled day off to thrill a roaring crowd of 27,319.

They roared even more when Griffey hit Pena's first pitch into the right-center bleachers for his 618th career home run. The grinning Junior got hugs in the dugout from almost his entire team, then tipped his batting helmet while taking a curtain call from the top step.

It was Griffey's sixth career pinch-hit home run and first since Sept. 25, 2006, when he was with his hometown Cincinnati Reds.

Woodward followed with his second hit of the night _ his first two since Sept. 27, 2007, when he was with Atlanta. Then Johnson, activated earlier in the day after missing five days following the death of his mother-in-law, lined a pitch from Pena past third base and into the left-field corner to score the go-ahead run.

Seattle starter Jarrod Washburn allowed a season-low three hits, but also three runs _ two earned _ in seven innings. He hasn't won since April 21, and it looked like he'd be the tough-luck loser until the Mariners' eighth-inning rally.

Washburn dug a 2-0 hole when he walked No. 9 batter Ryan Roberts on four pitches to begin the third. After a single by Felipe Lopez, Washburn threw into the back of Stephen Drew before Drew reached first base on a sacrifice bunt. Drew got away with running inside the base line with his left foot on the infield grass before the ball rolled into right field.

Roberts scored on Washburn's error, and Justin Upton's ground out scored Lopez.

Montero made it 3-0 in the fourth, driving a fastball from Washburn off the yellow line atop the right-center field wall for his third home run.

The Mariners lost left fielder Endy Chavez to an apparent right knee injury in the fifth when he flipped hard to the turf in a collision with shortstop Yuniesky Betancourt on a pop fly. Chavez appeared to call for it but Betancourt caught it, and Chavez was carted from the field shaking his head with a trainer at this side.

Notes: Seattle is already without Jose Lopez, its RBI leader, who is in Venezuela indefinitely to be with his seriously ill sister. ... Arizona 1B Tony Clark went hitless in his first game off the DL. The 37-year-old missed 41 games with a sprained ligament in his right hand. ... INF Chad Tracy, on the DL since May 30 with a strained oblique, began a rehab assignment for Triple-A Reno at Tacoma.