"Any time you win a 2-1 ballgame," Astros manager Brad Mills said, "the pitching's got to be outstanding, and there was no doubt about it tonight."
Happ (4-3) won his second consecutive start by allowing one run and five hits in six innings, while striking out six batters, and the bullpen retired nine of the 10 batters it faced, including seven by strikeout. The 13 strikeouts by the Astros tied a season high.
Wright retired all four batters he faced, Lopez got two huge strikeouts to end the eighth and strand the tying run at third base, and Myers pitched a 1-2-3 ninth inning for his 11th save in 12 tries.
"We know most of our games are close games, so from the start you can kind of tell what type of game it's going to be," said Wright, who struck out the three lefties he faced. "We got to about the fifth inning and we knew it was going to be a game we were going to try to hold the lead, and we were able to do it."
Martinez, who had only five hits and two RBIs in his previous 56 at-bats, stroked a two-out single to right field in the sixth off reliever Shawn Camp to score Justin Maxwell from second base to break a 1-1 tie. Maxwell drew a two-out walk earlier in the frame as the Astros scuffled for anything against Cubs starter Travis Wood (0-1).
"I was glad I was able to come through for the team tonight," Martinez said. "I know they've been behind me and they've been pushing me and wanting the best. I was just happy I was able to come through for them tonight."
Jose Altuve led off the first inning for the Astros with a 418-foot home run to left-center field, giving him three for the season. The 5-foot-5 Altuve admitted he tested the limits of his strength.
"That's all I've got," he said with a smile. "I've never hit one like that before."
Jed Lowrie followed Altuve's homer with a double to right, but Wood retired 17 of the next 18 batters he faced before Maxwell walked in the sixth.
"The first batter of the ballgame, he hits a home run, and I guess everything is out of the way," Wood said. "You've already given up a hit, you've already given up a home run, so there's not much left to do but bear down and get after it."
Alfonso Soriano hit a homer to left-center to lead off the fourth that traveled 434 feet, tying the game and leaving Happ to tip his cap. Soriano has four homers in his last eight games after going 30 games without a homer to start the season.
"We found out how far he can hit a baseball, and it's about 600 feet," Happ said. "I didn't want to put guys on base. I was just trying to be aggressive. He obviously got that one."
Happ is 2-0 with a 0.75 ERA in his last two starts.
"Happ threw the ball great," Myers said. "That's back-to-back [good] starts for him, and I think he's back. He and [catcher Chris] Snyder worked fast, and that keeps Happ's rhythm going and being able to locate pitches. He's throwing the ball really well for us."
Wright pitched a perfect seventh and recorded the first out of the eighth before Reed Johnson greeted Lopez with a single. Speedster Tony Campana ran for Johnson and advanced to third on an errant pickoff throw by Lopez, leaping over the attempted tag of third baseman Matt Downs.
"That's going to be all over the place tonight [on the highlights]," Mills said.
Lopez came back to strike out Starlin Castro and Soriano swinging to strand the tying run at third base, setting the stage for Myers, who struck the first two batters of the inning before getting Darwin Barney to ground out weakly.
"Lopey's been throwing the ball great," Myers said. "He goes out there and throws it over his shoulder and is ready to go. He's a big asset to our bullpen and he's one of our best pitchers down there. You have to put him in the game in those situations, and he went in there and did his job like he's been doing all year."