So when they scored seven in the first three innings on Monday night, the Astros were pretty confident they were headed for a win.
Castro's home run came in the second inning and Johnson added his in the third, to hand the Cubs their season-high seventh loss in a row.
"It's kind of comforting knowing Bud's on the mound, because we know if we get a couple of runs, Bud's probably going to make that stick," Johnson said.
Jed Lowrie homered for the second straight game, hitting a solo shot in the seventh inning to give the Astros three homers in a game for the second time in three games.
Norris (5-1) allowed five hits with eight strikeouts in seven innings. He has allowed just one earned run in his four-game winning streak.
The 27-year-old, who is in his fourth major league season, believes this is the best stretch of his career.
"I'm definitely in a rhythm right now," he said. "I've been working really well with Castro. Things have been there for me and I just want to keep it going."
Cubs starter Matt Garza (2-2) allowed five hits and season-high seven runs in three innings -- his shortest start of the season.
"I left everything up," he said. "I was overthrowing everything."
Cubs manager Dale Sveum was baffled by Garza's struggles.
"That was not Matt Garza pitching," he said. "I don't know; it was strange. It's not the Matt Garza I've seen ... seems like he got out of whack somehow."
Johnson hit a two-out single in the second inning before a walk by J.D. Martinez to set up Castro's homer, which broke a 0-for-9 streak. His first home run of the season landed several rows up in the lower deck in right field, where a man wearing a Cubs shirt fell backward trying to catch it, to put Houston up 3-0.
It was Castro's first home run since July 19, 2010, also against the Cubs, and his three RBIs tied a career high set that day.
"It's been too long, so hopefully we can kind of break that trend," Castro said.
Lowrie singled in the third and later stole second base and advanced to third on an error by catcher Koyie Hill. He scored on a single with two outs by Carlos Lee to make it 4-0. Brian Bogusevic walked before Johnson's 429-foot shot to the deepest part of the park in center field pushed Houston's lead to 7-0.
"We were patient up there," Johnson said. "We got our pitches and did damage with them."
Chicago didn't score until the ninth inning when reliever Enerio Del Rosario allowed three straight hits, capped by an RBI single by pinch hitter Reed Johnson to make it 8-1. He was replaced by Fernando Abad, who gave up a run-scoring single by David DeJesus.
DeJesus walked to start the fifth inning before Norris retired the next eight batters, striking out four. He didn't allow another man on base until DeJesus singled with two outs in the seventh inning, but he struck out Tony Campana to end the inning.
Campana walked in the first and stole second and third base. But the Cubs came away empty when Bryan LaHair struck out to end the inning. Ian Stewart walked with one out in the fourth and reached third on a single by Hill with two outs. He was left stranded when Norris retired pinch-hitter Jeff Baker.
Sveum said catcher Welington Castillo, who has a sprained knee ligament, was doing better on Monday, but wasn't healthy enough to return to the lineup. ... Houston optioned RHP Jordan Lyles to Triple-A Oklahoma City and recalled Del Rosario to take his spot on the roster on Monday. ... Astros CF Jordan Schafer missed his second straight game since injuring his lower right leg avoiding a collision Saturday night. But he said before the game that he was OK, and manager Brad Mills expects him back in the lineup Tuesday. ... Chicago left-hander Travis Wood is expected to be recalled from Triple-A Iowa on Tuesday to start against J.A. Happ when these teams play Game 2 of the three-game series.