The Orioles (88-51) won their fifth straight game, all on the road. They kept their lead in the American League East at 3 1/2 games over the Tampa Bay Rays (85-55), who beat the Boston Red Sox 3-1 earlier on Wednesday.
Anthony Santander went 3-for-4 with a homer and three RBIs for Baltimore, which has won 11 of its past 14 games.
Angels starter Kyle Gibson (14-8) went six innings and allowed three runs on six hits. He walked two, struck out three and tied the Toronto Blue Jays' Chris Bassitt for the most wins in the AL.
Angels left-hander Patrick Sandoval (7-12) worked five-plus innings, and all four batters he walked came around to score. He yielded seven runs, four earned, in seven hits with three strikeouts.
The Angels (64-76) took their sixth straight loss and fell to 1-9 since Aug. 27.
The Orioles went up 1-0 in the second inning when Ramon Urias drove in Hays with a single.
Baltimore opened it up with four runs in the third for a 5-0 lead.
After an error and two walks loaded the bases with one out, Hays singled to left to drive a pair. Two batters later, Aaron Hicks singled past shortstop Luis Rengifo to score two more.
In the bottom of the third, Rengifo crushed a Gibson changeup 408 feet into the right field seats for a two-run homer, his 16th of the season, to cut the Angels' deficit to 5-2.
The Orioles piled on again after Sandoval walked the first two batters of the sixth, ending his outing. Jaime Barria entered and gave up a run-scoring grounder to Santander and a sacrifice fly to Hays.
The Angels' Mike Moustakas hit a sacrifice fly in the bottom of the sixth to make it 7-3.
The Orioles put the game out of reach at 10-3 in the eighth on back-to-back homers by Santander — a two-run blast for his 27th of the year — and a solo shot from Hays, his 14th.
—Field Level Media