Chicago dropped five games behind the American League Central-leading Detroit Tigers after the loss.
Chicago built an early 3-0 lead and White Sox starter Jake Peavy was cruising until getting roughed up in the fourth inning when Michael Young led off with a single, the Rangers first hit of the game, and scored on a double by Nelson Cruz.
Moreland then hit a three-run blast to give the Rangers a 4-3 lead.
"Huge, real huge," Texas manager Ron Washington told reporters. "Once Mitch caught one, we got energized and started going from there."
Chicago capitalized on a two-base throwing error in the fifth inning to tie it 4-4, before Josh Hamilton led off the sixth inning with a solo home run and Moreland put the game out of reach with a two-run homer.
Moreland has been nursing a sore hamstring that kept him out of the lineup on Thursday.
"It was fun, a good night," Moreland told reporters.
"The hamstring felt fine today, we were good to go."
Peavy took the loss giving up seven runs on six hits in six innings while reliever Yoshinori Tateyama replaced Texas starter Matt Harrison in the fifth and pitched 2-2/3 innings without giving up a hit to get the win.
"I just got behind him (Moreland) twice and challenged him, and he won both," Peavy told reporters. "I just have to make better pitches."
(Reporting by Mike Mouat in Windsor, Ontario. Editing by Greg Stutchbury/Patrick Johnston)