Keuchel threw six scoreless innings to win his career-high seventh game of the season, and the Astros got home runs from Marwin Gonzalez, Springer and Matt Dominguez and held on to win their sixth consecutive road game, 5-4, to improve to 10-3 in their last 13 games.
"That's a good one to win there, considering the adversity we had to overcome," Astros manager Bo Porter said. "They mounted a strong comeback and to hold on to win that game is a tribute to those guys. They did a great job."
Gonzalez homered in the first and Dominguez homered in the fourth to put the Astros ahead, 2-0, and Fowler sparked a three-run outburst in the sixth inning with a leadoff triple. Altuve scored him on a single, and Springer followed with a two-run homer to right field -- his 11th -- to make it 5-0.
The Twins scored three times against Tony Sipp in the seventh inning on back-to-back doubles and a two-run homer by Danny Santana -- the first of his career -- to cut the lead to 5-3. Back-to-back doubles off Jerome Williams in the eighth made it 5-4.
Chad Qualls got his seventh save by working the ninth and stranding a runner at second base following a two-out throwing error by Dominguez -- his second of the game. Altuve began the inning with a diving stop to throw out a runner at first, which was one of a handful of sparkling defensive plays.
"I thought that the biggest part of the ballgame was the defense they played on us," Twins manager Ron Gardenhire said. "They made play after play. We hit some balls pretty good, and they kept making diving plays all over the place, which actually saved the ball game for 'em."
Dominguez had a great stop at third base in the second inning and started a crisp 5-4-3 double play to end the third, and Fowler had a terrific diving catch in the left-field gap to rob Trevor Plouffe to start the eighth.
The significance of Fowler's catch magnified when the Twins got consecutive doubles later in the inning to cut the lead to 5-4.
"When it was hit, I was like 'I've got to go a long way for that,' so I just put my head down and ran and picked it up, and the only way I could catch it is if I dived for it," Fowler said.
Porter called it the play of the game.
"That's a leadoff double, if not a triple, if he ends up diving and not getting the ball," he said. "And Altuve had a big play in the ninth as well. Defensively, we played well. We made a couple of mistakes that opened the gate for them, but at the same time we did a tremendous job of overcoming that adversity and getting the win."
Springer's homer was impressive. He reached out for a Phil Hughes pitch off the plate and muscled it 402 feet over the right-field wall for his first home since May 29. That's only a span of 25 at-bats, but he was seemingly hitting a homer in every game just a week ago.
"I was just trying to hit something hard and was able to hit it, and was able to hit it on the bat barrel," Springer said.
Keuchel didn't have any 1-2-3 innings, but he routinely made the big pitch when needed. He allowed a pair of two-out singles in the second, but watched Dominguez make a great play at third to end the inning. A sharp 5-4-3 double play got him out of the third. The leadoff batter reached in the fourth, fifth and sixth, but Keuchel came back with three quick outs each time.
He's 5-1 with a 1.36 ERA in his last six starts and is making a push for All-Star consideration. His seven wins are the most by an Astros pitcher prior to the All-Star break since Lucas Harrell and Wandy Rodriguez both had seven in 2012.
"Even the jams he was in, he made quality pitches to get out of them," Porter said. "I felt like our defense turned some great double plays to get out of a couple of those jams as well."
Keuchel (7-2) improved to 6-0 on the road and has 10 quality starts in 12 outings this year. He surpassed his previous career high of six wins set last year (6-10).
"My dad texted me and told me that was my career high already," Keuchel said. "It's exciting. That just means the team's playing better and I pride myself on going out there on trying to give the team the best possible opportunity to win the game every fifth day, and right now we're playing great. We're going to try to keep this role going."
Altuve's RBI single in the sixth inning was his Major League-leading 83rd hit, giving him at least one hit in 26 of his last 29 games.
The game was delayed 1 hour, 21 minutes at the start because of the threat of rain.