After another dismal night at the plate for eight innings, the Seattle Mariners entered the bottom of the ninth down three and appearing unlikely to rally.

Seattle managed a meager four hits off Texas starter Derek Holland up to that point and the team had been shut out 10 times already this season. But the situation quickly changed in the ninth before it went sour again just as quickly — a base-running mishap helped the Texas Rangers hang on for a 3-2 win Friday night.

Kyle Seager singled with one out against Texas closer Joe Nathan. Despite a pitch that broke his bat, Justin Smoak singled to the left side. Pinch-hitter John Jaso singled to right, making him 5 for 12 this season in that role. Suddenly, the Mariners had the bases loaded and one out as Nathan teetered.

Michael Saunders hit a hard ground ball that hit first baseman Michael Young in the shoulder and bounced well away. Seager scored and Smoak was on his way around before being held by third base coach Jeff Datz. Saunders sprinted around first and saw the stopped runners in front of him too late.

Nathan yelled to Young, who recovered to throw back to first from foul territory, enabling Nathan to tag out a hung up Saunders.

"That was a tough break for us," Seattle manager Eric Wedge said. "The furthest guy away from it was Jeff. You don't want to run into an out, but the ball ricocheted away further than what he thought."

A wild pitch eventually scored Smoak and Nathan had to strike out Dustin Ackley with the bases loaded to finish his 19th save.

"I don't care if I give up eight runs in an inning, as long as we walk off with a W," Nathan said.

The frazzled ninth was preceded by the Rangers cruising behind Holland.

Holland entered the game with a 5.05 ERA and only one scoreless start in 2012, which came over six innings at Baltimore on May 10.

Friday, he threw 7 2-3 innings, struck out four, walked two and didn't allow a run. Two of the four hits he gave up were to Casper Wells, and all were singles. Holland had thrown a previous high of 7 1-3 innings three times this season.

"I want to be the starter and the closer," Holland said of working deep into games.

Adrian Beltre's 16th homer of the season came on a 1-0 pitch from Seattle starter Kevin Millwood in the sixth inning. It was Beltre's fourth career home run off the veteran and drove in Josh Hamilton, who had singled, to put the Rangers up 3-0.

Millwood (3-7) threw 6 2-3 innings, allowed three earned runs on eight hits and two walks. He struck out four.

Ian Kinsler's fifth-inning single to left produced an out and a run for Texas. Young scored from third, but catcher Mike Napoli, who had stolen his first base of the year earlier in the inning, was thrown out at the plate by Wells. That ended an inning helped along by Ackley dropping the transfer on a likely double play off Napoli's bat.

Napoli bruised his thigh on the slide and came out of the game after the eighth inning. Napoli likely won't catch the next two days.

The Mariners loaded the bases with one out in the fourth, but Holland wriggled free. Smoak put up a 10-pitch at-bat — which included a foul ball into the second deck about 15 feet left of the foul pole — before popping up to shortstop.

"I got some pitches to hit, hit some balls hard foul and it was a big at-bat there," Smoak said. "Maybe we don't play the bottom of the ninth if I come through there."

Miguel Olivo then hit a flare into right field that Nelson Cruz charged to make a sliding catch.

Holland finished the erratic inning, he walked two and threw seven consecutive balls at one point, without allowing a run.

"That is kind of where we are right now," Wedge said. "But, you can't give into the fight."

NOTES: Texas starter Colby Lewis threw a bullpen session Friday and is on track to start Wednesday. Lewis is working back from right forearm tendinitis which put him on the disabled list June 24. . Mariners outfielder Franklin Gutierrez (concussion) was cleared for non-baseball exercise Friday. Gutierrez was hit in the ear by a pick-off throw to first base June 28 and was placed on the seven-day disabled list. . Seattle failed to sign its eighth-round pick Nick Halamandaris by Friday's deadline, and he will return to Cal.