Ryan Dempster (11-6) struck out eight over seven innings to get the win and improved to 7-1 since being acquired by the Rangers from the Chicago Cubs.
Beltre hit a two-run homer to highlight a three-run first inning, his seventh blast in the last 11 games. Hamilton hit a solo homer into the upper deck in right field in the third, giving him a major league-best 41 for the season.
Beltre later left the game with a sore right shoulder after making a diving stop of a Russ Canzler grounder in the second inning. Team officials said Beltre would have an MRI performed on Thursday to make sure there was no damage to the shoulder.
Hamilton also left the game with a sore knee, but Manager Ron Washington said he was not concerned that his slugging outfielder would miss any games.
Dempster gave up seven hits and walked only one. Joe Nathan struck out two in the ninth for his 33rd save.
The loss went to Jeanmar Gomez (5-8), who allowed five runs on six hits in four innings.