SEATTLE (AP) -- Before he could really turn around, Brendan Ryan was being lifted off the ground to get a good view of the scrum that was about to take place.
To no one's surprise, it was Felix Hernandez hoisting Ryan in the air.
"I'll take a bloody nose. I don't care. It's always worth it," Ryan said.
Ryan made a winner out of Hernandez with a two-out RBI single up the middle in the ninth inning, and the Seattle Mariners beat the Chicago White Sox 3-2 on Friday night.
Always showing his emotions on the mound, Hernandez was furious with himself after giving up a tying home run to Carlos Quentin leading off the seventh. He smacked his glove in excitement after striking out Alex Rios to end the ninth, then was in the middle of the celebration after Ryan's single.
Hernandez (4-2) tossed his second complete game of the season and the 15th of his career, striking out six and giving up five hits. He was brilliant early, retiring the first nine in order on just 30 pitches, then overcame his own mistakes to give Seattle's bats a chance at the end.
"I was pounding the strike zone. The sinker was pretty good today," Hernandez said. "I got a lot of groundballs. The first three innings I threw mostly fastballs and then started mixing it up. Everything was working."
Seattle squandered plenty of chances before the ninth inning arrived, having left runners in scoring position in the third, sixth and eighth innings.
Jack Cust started the rally with a one-out single off Chicago's Matt Thornton (0-3) and Jack Wilson followed with another hit just over the glove of leaping second baseman Gordon Beckham . Adam Kennedy came on as a pinch runner for Cust and Michael Saunders hit a flyball deep enough to move Kennedy to third.
Ryan, who snapped an 0-for-21 skid on Thursday night, then lined a 1-0 pitch past Beckham's diving attempt to score the winning run. Seattle has won eight of 10 and is back within a game of .500.
"Fortunately that last at-bat I got a good pitch to hit and didn't foul it off," Ryan said.
Ryan also came through on the defensive side when Hernandez faced a jam in the eighth. Beckham led off the inning with a double into the left-field corner and was at third with one out. Alexei Ramirez hit a two-hopper to Ryan at shortstop and immediately turned to third where Beckham was caught too far off the bag. He was eventually tagged out in a rundown.
"It was not a contact play tonight, unfortunately. I wish it was," Beckham said. "The ball went right to that guy and Figgins was playing close to the bag anyway. I was told don't get too far off the bag and I got too far off the bag."
Hernandez didn't make it easy walking Adam Dunn , but got Paul Konerko to tap back to the mound to end the inning, then retired the side in order in the ninth.
"He had it all working I thought," Seattle manager Eric Wedge said. "His ball moves all over the place ... and he has a great sense of what he wants to do out there."
Milton Bradley and Justin Smoak both had RBI doubles in the sixth inning to give Seattle the lead. Bradley sliced a pitch from Phil Humber just inside the left-field line and Smoak continued his hot bat with a long ground-rule double to deep left-center.
Bradley was later ejected in the eighth arguing with home plate umpire Mike Muchlinski, and was pulled away by Wedge after a heated few moments.
Humber was equal to the reigning AL Cy Young winner. The White Sox's promising right-hander gave up just three hits - all doubles - and two runs in seven strong innings.
NOTES: This was the first of nine meetings between the clubs this season. Chicago went 9-1 against Seattle last season. ... Olivo started his 11th straight game at catcher, his longest streak of consecutive starts behind the plate in six seasons. ... Seattle CF Franklin Gutierrez was supposed to play seven innings in center field on rehab at Triple-A Tacoma on Friday night but was moved to DH after rain delayed the start of the game.
Tim Booth can be reached at http://twitter.com/tjbooth7