The win was the seventh home victory in a row for the Angels (48-36) and left them with a 13-1 record in their last 14 in Anaheim. The loss was Houston's fourth straight and seventh in their last eight road games. The Angels remained 3 1/2 games behind division-leading Oakland.
Shoemaker stranded six Astros, including four in scoring position, over his six innings, but perhaps none bigger than in the third inning.
With two runs already in and runners on first and second with one out, Shoemaker coaxed a pretty 3-6-1 double-play ball from Matt Dominguez to end the inning and the last real Houston threat.
"In those situations, the best thing is to try to get a double-play ball," Shoemaker said. "Just really trying to pitch low in the zone, get a double-play ball, ground ball."
But Shoemaker's first escape did not even require a pitch.
In the first inning, Shoemaker nabbed George Springer at first with a quick pickoff to end a first-and-third threat. The pickoff came after allowing back-to-back hits to open the game.
"He had to work hard to get through six innings tonight," manager Mike Scioscia said.
Less than a week ago at Kansas City, Shoemaker could not get out of a jam, falling victim to a seven-run third inning and lasting just four frames against the Royals while allowing eight runs on 11 hits.
"It's a positive thing to bounce back from last outing to this one," Shoemaker said. "This one, if you really look at it, was a successful outing but a little bit of a struggle, had to make some big pitches to get out of jams."
On Thursday, the Astros went just 1-for-8 with runners in scoring position. Kansas City went 5-for-8 last Friday against Shoemaker (6-2).
"He's given us a chance to win the vast majority of games he's pitched in so I don't think you're going to put any more weight or pressure on one game depending on how your other one went before and certainly, he's not going to let up his next start because he had a good one this time," Scioscia said. "I don't think we need to look back."
After Shoemaker got out of the third inning, the Angels backed him with a four-run fourth, highlighted by David Freese's two-run double to right. Freese's double capped a string of four consecutive Angels hits and gave them a lead they would not give up.
C.J. Cron had an RBI-single and Chris Iannetta drove in a run with a deep sacrifice fly during the rally.
Freese started slow this season but come on lately, with six RBIs and three multihit games in his last five games.
"We need him," Scioscia said. "Hopefully, he's finding a comfort level. His last 30 or so at-bats, he's starting to hit the ball a little bit better and drive the ball a little bit better. We need David."
But, perhaps, the Angels have needed Shoemaker more.
Shoemaker, a 27-year-old rookie, spent most of his career in the Minor Leagues before starring as a key cog in the Angels rotation this season.
"I'm not going to say I'm surprised because Matt has the potential to do what he's doing," Scioscia said. "I think the fact that he's doing it and doing it in a role that we need so badly says a lot about his makeup and character and hopefully it'll continue."
With seven strikeouts Thursday, Shoemaker has now struck out more batters (57) in his first 10 career starts than any Angel had before him. He passed Bo Belinksy, who had fanned 56.
"He has struck out his share of guys if you look statistically through his career in the Minor Leagues," Scioscia said. "You never how stuff is going to play up in the Major Leagues until a guy gets an opportunity. Shoe definitely has some out pitches and some pitches he can get strikeouts with."
Houston left-hander Brett Oberholtzer (2-7) took the loss for the Astros (36-51), surrendering nine hits and five runs in 6 1/3 innings.
With the win, Scioscia tied Whitey Herzog on the all-time wins list at 34th with 1,281.