CHICAGO -- Nelson Cruz belted a two-run homer in the sixth inning to put Seattle ahead, slumping Kyle Seager hit a solo shot in the second and the Mariners held on to beat the Chicago White Sox 4-3 on Saturday night for their third straight win.
Cruz greeted Anthony Swarzak (4-3), Chicago's second reliever, with his 18th homer on a deep drive to center. Seager's homer was his 11th, but his first -- and only his fourth hit -- in his last 10 games.
Melky Cabrera belted his 11th homer and had two RBIs as he moved up to Chicago's leadoff spot for the eighth time this season and went 4-for-5.
Seattle starter Felix Hernandez (5-3) scuffled, but got the win in his fifth start since turning to the rotation after missing 54 games with right shoulder inflammation. The 2010 AL Cy Young winner lasted just five innings, giving up six hits and three runs, but only one was earned due to three Mariners' errors.
Hernandez hit Chicago slugger Jose Abreu twice with pitches to create bases-loaded, no-out jams in the third and fifth innings. But the six-time All-Star right-hander allowed only one run in those situations -- on Todd Frazier's double-play grounder in the fifth that put Chicago ahead 3-2.
Four Seattle relievers followed with four scoreless innings. Edwin Diaz pitched the ninth, allowing a single to Cabrera and walking Avisail Garcia with two outs, but got his 15th save in 18 chances when he fanned Abreu to end the game.
Chicago starter Mike Pelfrey pitched 4 2/3 innings, allowing four hits and two runs -- one earned -- in a no-decision.
Cabrera opened the bottom of the first inning by drilling a solo shot to right.
Seager lofted Pelfrey's inside 2-2 offering down the right field line and deep into the seats in the second inning to tie it at 1.
Cabrera's sharp single drove in Adam Engel in the third to put Chicago back ahead 2-1 with an unearned run. Engel reached on shortstop Jean Segura's error, stole second and advanced to third on a wild pitch.
The White Sox went on to load the bases with none out, but Hernandez escaped the jam with no additional runs scoring. Todd Frazier's weak grounder to third forced out Cabrera at home, then Tyler Saladino popped out and Matt Davidson flied out to center.
Seattle tied it at 2 with an unearned run in the fifth. Carlos Ruiz singled in Danny Valencia from third with two outs. Valencia had reached when White Sox shortstop Tim Anderson failed to pick up the Mariners first baseman's routine ground ball for his MLB-worst 20th error.
The White Sox loaded the bases again with none out in the bottom of the inning. Frazier grounded Hernandez's 0-2 pitch into a 6-4-3 double play to plate one run, but Saladino struck out and Chicago settled for a 3-2 lead.
Dan Jennings walked Robinson Cano to lead off the sixth, then Swarzak entered and gave up with Cruz's homer to center.
NOTES: Melky Cabrera's leadoff homer has the fourth of his career. ... Seattle's Jean Segura went 2-for-4 and has 21 hits in his last 44 at-bats. ... Chicago INF/OF Leury Garcia, out since June 15 with sprained finger on his left hand, is making progress at the team's Arizona training complex and should be ready for a rehab assignment "in the next day or two," according to manager Rick Renteria. ... Chicago RHP Dylan Covey has resumed throwing from a pitching mound after going on the DL in late May with a left oblique strain. ... The White Sox acquired 20-year-old minor league INF Yeyson Yrizarri from Texas for international signing bonus pool money.