Walsh also doubled and had two RBI as the Angels got their third win in four games.
After playing parts of the last two seasons, Walsh has become a tough out batting behind superstar Mike Trout in his first year as an everyday player.
“He was pretty spectacular," manager Joe Maddon said. “He’s playing with a lot of confidence. You can’t win that game without him out there."
His 29 RBI are tied for second in the American League and his .347 average ranks fourth.
“I just want to be another piece in the lineup," he said. “Just put pressure on pitchers."
Houston manager Dusty Baker raved about Walsh.
“I think he’s one of the best young hitters around, and so do they," he said. “This young man, he can hit. He’s been giving us trouble ever since the year started."
The Angels trailed by three and Houston starter Luis Garcia had retired seven in a row before Walsh cracked his homer to the corner of right field with one out in the sixth. Upton followed with his shot, which hit on the wall above the seats in left field, to cut the lead to 4-3 and end Garcia’s night.
Brandon Bielak (1-2) walked Jose Rojas before a double by Taylor Ward. The Angels tied it when Rojas scored on Phil Gosselin's single on a groundball that shortstop Carlos Correa didn’t field cleanly.
The Angels went on top 5-4 when Ward scored on a sacrifice bunt by Drew Butera.
In a bullpen game, José Suarez (1-0) allowed five hits and one run in four innings of relief for the win and Raisel Iglesias allowed one hit in a scoreless ninth for his sixth save.
“It was a real team effort up and down," Maddon said. “Beautiful stuff."
Myles Straw had two hits and two RBI for the Astros, who went 4 for 14 with runners in scoring position.
“You get a bad feeling in your stomach like: ‘Oh Lord, we left a lot of runners out there and kept them in the game,'" Baker said.
Junior Guerra made his first start since Sept. 2, 2018, filling in as an opener for the Angels with Alex Cobb on the injured list with a blister. Guerra, who has made 12 relief appearances this season, allowed three hits and three runs in one-plus inning.
Guerra walked the first two batters and the Astros made it 1-0 on a ground-rule double by Alex Bregman. Kyle Tucker doubled to open Houston’s second and scored on a single by Straw that chased Guerra.
Trout walked to start the fourth and scored on a double to center field by Walsh to cut the lead to 3-1.
There were two outs in the fifth when Correa singled and Tucker walked. Straw’s double to left field scored Correa to make it 4-1.
Angels two-way star Shohei Ohtani had a tough night, going 0 for 5 and tying a season high with three strikeouts.
Angels: 3B Anthony Rendon, who has been on the injured list since May 3 with a left knee bruise, did some work on the field before Monday’s game and could return for the start of Friday’s series at Boston.
Astros: LHP Framber Valdez, who has been out since fracturing his left ring finger on March 2, could throw a bullpen in Houston this week before beginning a minor league rehab assignment. ... RHP Jake Odorizzi is expected to throw live batting practice on Wednesday. He’s been on the injured list since April 24 with strained muscle in his right arm.
The Astros have reached the 85% vaccination threshold for Tier 1 individuals, which allowed them to ease some coronavirus restrictions on Monday. Now that they’ve reached the threshold, they don’t have to wear masks in the dugout or bullpen and no longer must use electronic tracing devices.
Ohtani (1-0, 2.41) is expected hit Tuesday night when he starts against Lance McCullers Jr. (2-1, 3.58). Ohtani has hit on the same day he’s pitched two times this season but has been out of the lineup the last two times he’s pitched.
No-hitter No. 7: Cubs blank Dodgers, tie MLB's season record
— Zach Davies and three Chicago Cubs relievers combined for the seventh no-hitter in the majors this year Thursday night, blanking the Los Angeles Dodgers 4-0 and tying the record for most no-hitters in a single baseball season since 1900.
Cubs toss combined no-hitter vs. Dodgers
Zach Davies and the Cubs' bullpen no-hit the Dodgers for MLB's seventh no-hitter of the season.
Chicago Cubs' Zach Davies, three relievers combine for MLB's 7th no-hitter
Four Chicago Cubs pitchers combined to blank the Los Angeles Dodgers in a 4-0 win on Thursday night for the seventh no-hitter of the MLB season.
Contreras' two-run blast gives Cubs a 3-0 lead
Willson Contreras cranks a two-run homer to left field to pad the Cubs' lead.
Javy Baez welcomes boos from Dodger Stadium after crushing HR
Javier Baez belts a solo home run to center field to give the Cubs an early 1-0 lead.
Kershaw, Bellinger present Pederson with his World Series ring
Joc Pederson receives an ovation from Dodger Stadium as he is given his 2020 World Series ring from former teammates.