HOUSTON -- Of all the good things Astros starter Lance McCullers did on Monday, manager A.J. Hinch was most impressed with the poise the 22-year-old showed in escaping a couple of jams.
"He's handling things with a little bit more ease and a little bit more confidence," Hinch said. "He's not pressing too much in those situations. ... It's a good sight to see as he's developing."
McCullers (4-2), who missed his previous turn with a blister on his right index finger, allowed five hits and one run while matching his season high for strikeouts. Luke Gregerson pitched a perfect eighth and Will Harris did the same in the ninth for his eighth save.
Dae-Ho Lee had an RBI single for the Mariners, whose four-game winning streak was snapped.
Seattle came up empty twice after having a runner on third with no outs.
The first time came when Leonys Martin hit a leadoff triple before Seth Smith struck out. McCullers then struck out Robinson Cano, but the ball got away from catcher Jason Castro and Martin broke for home. McCullers covered and took the short toss from Castro to tag out Martin at the plate.
Springer got things going for the Astros with a double in the first before a single by Marwin Gonzalez. Carlos Correa drew a walk to load the bases with one out before the Astros took a 1-0 lead on a sacrifice fly by Luis Valbuena.
Kyle Seager hit a ground-rule double with one out in the second and the Mariners tied it on the single by Lee. McCullers settled in after that, retiring the next 14 in a row. He struck out eight in that span, including the side in the third.
The Mariners didn't have another baserunner until Cano singled to start the seventh. A walk by Nelson Cruz followed by a single from Seager loaded the bases. Seattle missed another scoring opportunity when Lee grounded into a double play before McCullers retired Adam Lind to end the inning and his day.
"I got into a situation where the count was in my favor so I threw a pitch that he was either going to strike out on or hit a ball on the ground, and I was lucky that it came back to me," McCullers said. "That was huge, and that was the game right there, 2-1. You pitch the whole game to face two or three batters and I came out on top that time."
Seattle manager Scott Servais lamented his team's missed opportunities.
"I thought we had them on the ropes there in the seventh inning, bases loaded and nobody out," he said. "Unfortunately, we didn't get it done. But McCullers had really good stuff. Probably one of the better breaking balls we've seen all year."
Springer doubled and scored in the first inning. There were two outs in the fifth when he launched his 19th home run to left-center field to make it 2-1.
Seattle starter Wade Miley (6-5) yielded seven hits and two runs in 6 2/3 innings for his third straight loss.
Smith went 0 for 4 with three strikeouts, ending a streak of four straight games with a homer.
Mariners: RHP Felix Hernandez will throw a simulated game Wednesday. Servais said Hernandez will throw 45 pitches. Hernandez has been on the disabled list with a strained right calf since June 1.
FLIP AND PITCH
Four-time defending national champion and three-time defending world all-around champion gymnast Simone Biles threw out the ceremonial first pitch. But it was far from an average throw. The 19-year-old, who is from nearby Spring, Texas, flipped toward the mound before launching a high throw to pitcher Scott Feldman. Biles was relieved that it went well and glad she didn't become part of a blooper reel.
Mariners: Taijuan Walker (4-6, 3.29 ERA) starts for Seattle on Tuesday. Walker is 2-0 with a 1.59 ERA and 23 strikeouts in his last four starts.
Astros: Dallas Keuchel (5-9, 5.13 ERA) is scheduled to start Tuesday. Last year's AL Cy Young Award winner, who has struggled this season, has won two games in a row for the first time this year and is looking for his first win at home since April 15.
James Paxton, Boston Red Sox agree to 1-year, $10 million deal, sources say
Left-hander James Paxton and the Red Sox are in agreement on a one-year, $10 million contract with a two-year club option, sources said.
Raisel Iglesias, Los Angeles Angels agree to four-year deal, source says
Closer Raisel Iglesias and the Angels have agreed to a four-year contract, a source told ESPN's Jeff Passan.
Major League Baseball, players union no closer to deal with collective bargaining agreement set to expire, sources say
Major League Baseball and the players union are no closer to a new collective bargaining agreement with the expiration of the current one looming, sources said.
Baltimore Orioles reach 1-year deal with veteran 2B Rougned Odor
The Baltimore Orioles have agreed to a one-year deal with second baseman Rougned Odor.
Gio Urshela reaches $6.55M deal with New York Yankees; Domingo German agrees to $1.75M
Infielder Gio Urshela agreed to a $6.55 million, one-year contract with the Yankees on Tuesday, while starting pitcher Domingo German agreed to $1.75 million and pitcher Lucas Luetge to $905,000.
Miami Marlins acquire Joey Wendle, send Kameron Misner to Tampa Bay Rays
The Marlins have acquired third baseman Joey Wendle from the Rays for prospect Kameron Misner.