The Angels cut the Rangers' lead in the American League West to four games.
Roy Oswalt gave the Rangers another reason to look for pitching help at the trade deadline.
Angels switch hitter Kendrys Morales became only the third major-league player to homer from each side of the plate in the same inning -- one off Oswalt -- during a nine-run sixth of a 15-8 Los Angeles victory.
Mike Trout went 2 for 5 with a home run, four RBIs, three runs scored and a walk, and Albert Pujols went 3 for 4 with two RBIs and two runs scored and reached base four times for the Angels, who tagged Oswalt (3-2) for eight runs on 11 hits in 5 1/3 innings.
"I struggled with mechanics the whole game," said Oswalt, explaining that he couldn't consistently get a "downward plane" on the ball. The ball "just kept coming up and coming up."
Los Angeles sent 12 hitters to the plate in the sixth in breaking out of scoreless streak that had reached 24 innings after failing the score in the first.
Morales matched the feat of Cleveland's Carlos Baerga - who hit two in the seventh inning against the Yankees on April 8, 1993, at home - and the Cubs' Mark Bellhorn, who hit two in the fourth of a game in Milwaukee on Aug. 29, 2002.
"I'm very excited since it's not an easy thing to do," said Morales, a Cuban native who spoke through an interpreter. "They were good pitches, perhaps mistakes they made. I felt comfortable, and I was able to connect."
With his second home run, a grand slam from the right side, Morales became the 25th player in the American League to hit two home runs in the same inning.
"We need Kendrys and his last 100 at-bats he hasn't been driving the ball or swinging like he can, so it's good to see," Angels manager Mike Scioscia said.
The Angels cut the Rangers' lead in the American League West to four games. The two meet again the next three days in Arlington.
Pujols led off the Angels' sixth with a double and came around to score on Morales' first home run.
Alberto Callaspo followed with a flyout to center, but the Angels then rattled off five straight singles, Torii Hunter struck out and Pujols was intentionally walked to load the bases for Morales' second at-bat of the inning.
Trout had two RBIs and Bobby Wilson another in the inning.
"We struggled over the weekend for sure," Scioscia said. "You're not going to have it clicking every night . but it's good when it happens."
Both teams entered the game having trouble scoring.
The Rangers were in the midst of a run of 0 for their last 29 with runners in scoring position. But they converted on their first two opportunities on Monday.
David Murphy's double in the second Josh scored Hamilton, representing the Rangers' first run-scoring hit that wasn't a home run since Wednesday, a span of 26 innings.
Michael Young had two RBIs on sacrifice flies, including one off Angels starter Ervin Santana (5-10), who earned the victory by giving up three runs on four hits over five innings.
Trout gave the Angels a one-run lead with a two-run home run in the third before Hamilton tied the game at three with a solo home run.
"The offense woke up a little bit tonight," Rangers manager Ron Washington said. "Up until the sixth inning it was a very competitive game.
"It all started with the hanging breaking ball to Morales. And just couldn't stop it from there."
Robbie Ross relieved Oswalt in the sixth, but gave up four runs in 2/3 of an inning.
"This guy's competing at a high level," Washington said of Oswalt. "It wasn't just Roy."
Hamilton, in a prolonged slump, went 3 for 4 with a double and single and an RBI hitting out of the No. 5 hole.
NOTES: The last player with six RBIs in an inning was Juan Uribe of the San Francisco Giants, Sept. 23, 23, 2010, at Wrigley Field in Chicago. . Rangers reliever Robbie Ross, who had given only six earned runs in 50 innings this season, gave up four in 2/3 of an inning on Monday. . Maicer Izturis' home run continued a blistering pace of extra-base hits. Six of his last 10 hits have gone for extra bases, including four doubles and two home runs. He had six extra-base hits - all doubles - in his first 55 games. . Angels outfielder Mark Trumbo was not in the lineup because of back spasms, team officials said. He is day-to-day. . The team also announced that right-handed pitcher Dan Haren is expected to miss his scheduled start Wednesday against the Rangers because of back stiffness. . Rangers first baseman Mitch Moreland was back in the lineup after being activated from the disabled list Monday afternoon. Moreland had been out since June 20 with a strained groin.