Adrian Beltre hit a two-run homer to back 6 2/3 0, in the rubber match of a three-game series.
Harrison (13-9), who gave up six hits, won his third straight start for the Rangers, who lead the Angels by 4 1/2 games in the AL West.
The Rangers have five pitchers, all starters, with at least 13 victories in 2011 for the first time in franchise history.
"He kept the ball down, did a good job of changing speeds," Rangers manager Ron Washington said of Harrison. "He handled the left-handers pretty good today in that lineup and got us where we needed to get in that game."
Elvis Andrus went 3-for-5 with an RBI double for the victors. He extended his hitting streak to 12 games.
Seattle put a runner on third with two outs in the first, but Miguel Olivo struck out swinging.
Texas broke a scoreless tie in the fourth. Andrus led off with a single and scored three batters later on Beltre's blast to left.
"It was a sinker down and it caught more of the plate than he wanted it to, but other that he was real good again," Seattle manager Eric Wedge said of Hernandez. "He had to fight through that last inning, but he did. Three runs in seven innings, he did a good job for us."
The Rangers tacked on another run in the sixth. Ian Kinsler singled and crossed the plate on Andrus' double to left.
Texas leads the season series with Seattle, 12-4...Harrison improved to 5-1 in 12 games (eight starts) against the Mariners...Hernandez fell to 10-15 lifetime against the Rangers...The Rangers' magic number to clinch the division now stands at six.