The victory moved the Red Sox into a tie for first place with the New York Yankees in the American League East.
Gonzalez went 3-for-4 with two home runs, possibly ending a long slump in which he had one round-tripper in 155 at bats.
John Lackey (12-9) picked up the win with four runs on seven hits over 6 2/3 innings.
Colby Lewis (11-9) took the loss with a six-inning start in which he surrendered seven runs on nine hits.
Ian Kinsler and Josh Hamilton homered for the Rangers, who have lost three of four.
The Red Sox outhit the Rangers 14-8 and scored two runs in each of the first three innings to take an early 6-3 lead. They erupted for four more in the eighth to put the game out of reach.