Justin Maxwell was hit by a pitch with the bases loaded in the third inning and the Astros had to place the outfielder on the disabled list after the game with a broken left hand.
|More on Mariners-Astros|
|More MLB coverage|
Maxwell doesn't yet know how long he'll be out.
"I have to see the hand specialist tomorrow," he said. "But at least we got the win out of it."
Marwin Gonzalez homered and Norris rebounded from a tough start last time out as the Astros snapped a three-game losing skid.
The game was tied at 1 when Gonzalez launched his homer about 10 rows into the stands in right field to start Houston's third. Gonzalez, who bats ninth, hit just four home runs in 80 games last season and has three in 16 this year.
"Marwin has done a great job, not only defensively but offensively," Houston manager Bo Porter said. "Another big hit tonight, and he's done a good job, him and [Jose] Altuve up the middle, of really just solid defense across the board."
Maxwell was hit later in the third to send a run home and make it 3-1.
Norris (3-2) allowed a season-high eight hits in five innings, but was much better than last time out, when he yielded six runs in 2/3 innings.
"I definitely didn't have my best stuff by any means, but I battled ... and gave this team an opportunity to win and we did," Norris said. "I'm very happy with the results."
Houston closer Jose Veras pitched a perfect ninth for his second save in three opportunities.
Hisashi Iwakuma (2-1) struck out a season-high 11, but the six hits he gave up were also the most he's allowed this year. It's his first loss since September 14, and breaks a career-best five game winning streak.
Kendrys Morales extended his hitting streak to six games when he homered for the second consecutive game with a solo shot to center field in the eighth to cut the lead to 3-2.
Houston had retired eight in a row, including six straight by Travis Blackley when the homer by Morales chased him with no outs in the eighth. Hector Ambriz sat down the next three batters, with two strikeouts, to end the inning.
Seattle won the opener of this series 7-1 behind Felix Hernandez's 100th career win and three homers. But they couldn't string together many hits in this one and have failed to win consecutive games since the first two games of the season.
"The at-bats are getting better -- and we did have a lot of long outs, too -- but, we still have to do better than that," Seattle manager Eric Wedge said. "I do think we have guys heading in the right direction. That is obvious by the quality of the at-bats. Having said that, it's all about winning and losing, and we have to do a better job of finding to win ballgames."
Jason Castro walked with two outs in the first before a single by Chris Carter to left fielder Raul Ibanez. An error by Ibanez on the play allowed Castro to score to put Houston up 1-0.
Dustin Ackley singled with one out in the second before scoring on a two-out double by Endy Chavez to tie it at 1-all. Chavez got caught in a rundown trying to stretch the hit to end the inning.
Gonzalez led off Houston's third with his home run to put Houston up 2-1. Altuve and Fernando Martinez followed with back-to-back singles. They both advanced on the throw from center fielder Chavez on the hit by Martinez.
Iwakuma intentionally walked Carlos Pena with two outs to load the bases and plunked Maxwell on the left hand to send home another run and push the lead to 3-1. Iwakuma limited the damage by retiring Rick Ankiel to end the inning.
The Astros recalled outfielder Robbie Grossman from Triple-A Oklahoma City to take Maxwell's spot on the roster.
Houston tied a season high with 15 strikeouts. .. The series wraps up on Wednesday when Seattle's Joe Saunders opposes Lucas Harrell. ... Seattle's Kyle Seager extended his career-long hitting streak to 12 games. ... Seattle placed OF Franklin Gutierrez on the 15-day disabled list with a strained right hamstring. Gutierrez was injured on Monday night trying to make a diving catch in the fourth inning against the Astros. He has struggled with injuries in his career, and this is the fifth time he's been on the disabled list since the beginning of the 2011 season. The Mariners recalled Carlos Peguero from Triple-A Tacoma to take his spot on the roster. ... Montero's home run on Monday night traveled 441 feet, which is the longest home run hit in Houston this season and the second-longest of his career. ... LHP Xavier Cedeno, who was designated for assignment on Thursday, was claimed off waivers Tuesday by Washington.