Alex Rios had two hits and two RBIs as the Rangers picked up their fifth win in seven games. Elvis Andrus celebrated his 25th birthday with three hits and an RBI.
Kyle Seager hit his 20th home run of the season for the Mariners, who have lost four in a row.
Travis Blackley (2-1) earned his first win since being acquired in a trade with Houston on Aug. 14. Blackley, making his second start of the season, allowed three runs and five hits over six innings in his longest outing since Oct. 2, 2012.
It was a much different night for Seattle starter Joe Saunders (10-13), who turned in another sluggish outing. The left-hander allowed seven runs and nine hits in seven inning to fall to 1-5 with a 7.71 ERA in his last seven starts.
The Rangers led 4-3 before Pierzynski hit a drive to right after Adrian Beltre was intentionally walked with two out and a runner on second in the seventh. It was Pierzynski's 15th homer in his first season with AL West-leading Texas.
Moreland added his 19th homer in the eighth, giving the Rangers an 8-3 lead.
Neal Cotts, Joakim Soria and Tanner Scheppers each pitched a hitless inning after Blackley left.
Saunders got off to a slow start, and the Rangers took advantage. Saunders hit Craig Gentry leading off the game and Andrus followed with a single. The runners moved up on Ian Kinsler's sacrifice before Beltre walked to load the bases.
After Pierzynski bounced into a fielder's choice, Rios singled to center to lift Texas to a 2-0 lead.
The Mariners rallied in the third on Brad Miller's tying two-run single. Seager hit a drive to right with one out in the fourth, but that was all for Seattle.
NOTES: Before the game, the Mariners activated OF Franklin Gutierrez from the disabled list and designated RHP Aaron Harang for assignment. . Rangers OF Leonys Martin (sprained right ankle) was out of the lineup for the second straight game.