HOUSTON -- Houston's deep lineup can create all sorts of problems for its opponents.
"He's been a very clutch hitter," Houston manager A.J. Hinch said. "I've seen that base hit to right-center a handful of times during his short career. It does not surprise me that he put a good swing on a fastball away."
George Springer led off the 12th with a walk, and Alex Bregman followed with a bloop single into shallow right field that fell between three players. An error by Ryan Goins allowed Springer to advance to third.
"We had the shift on," Royals first baseman Hunter Dozier said of the bloop single. "Just perfect placement. We all tried, but we just couldn't get there."
After Altuve was awarded first, Correa singled into the gap in right-center against Justin Grimm (1-3).
"You get in that situation you have to intentionally walk one," Grimm said. "Bases loaded and no outs, just battling with that guy. He put a good swing on a fastball in the outfield. It happened how it happened."
Correa said he was trying to drive the ball to get a sacrifice fly or something to the outfield. It was his sixth career game-ending hit and first since August 1, 2016, against Toronto.
"I don't know how many career walk-offs I have," Correa said. "Every single time they walk Altuve. They walk him because the best hitter in the game is hitting in front of me, but at the same time, it's not an easy task to walk him and get me out."
Collin McHugh (3-0) pitched a perfect inning for the win. Houston's bullpen combined for six shutout innings.
"Everybody up and down the staff, we know that our job is to get outs no matter what time of the game it is called upon us to do it," McHugh said.
Kansas City carried a 3-2 lead into the ninth, but Houston rallied against Brandon Maurer. After Yuli Gurriel and Josh Reddick singled with one out, Evan Gattis hit a tying sacrifice fly to left. Marwin Gonzalez then walked, but Brian McCann grounded out to end the inning.
The Royals wasted a solid start by Ian Kennedy in their 10th loss in 11 games. Kennedy allowed two runs and four hits in seven innings.
Kansas City jumped in front on Dozier's three-run homer in the fourth, but Correa hit a sacrifice fly and Gurriel homered to trim the Royals' lead to 3-2 in the bottom half of the inning.
"Hunter gave us a big lift with the three-run jack," Kansas City manager Ned Yost said. "We just couldn't really muster anything outside of that. If we could just find a way to tack on a run here or there it would be beneficial for us."
Houston right-hander Lance McCullers Jr. struck out nine in six innings. He permitted four hits and walked two.
ALTUVE MOVING UP THE CHARTS
Altuve tied Terry Puhl for seventh in Astros history with 1,357 hits with his double in the fourth. Altuve tied Bill Doran for ninth place in franchise history with 611 runs when he scored in the fourth.
HE SAID IT
"He's going to do that 99 times out of 100. He did exactly what I thought he would." -- McHugh on Correa's game-ending hit.
Royals: 1B Lucas Duda (right foot) was recalled from his rehab assignment with Triple-A Omaha and started at designated hitter. He went 1 for 4 with a ninth-inning single. OF Paulo Orlando was optioned to Omaha to make room on the roster for Duda.
Royals: RHP Jason Hammel (2-8) will make his 16th start of the season Sunday in the series finale. Hammel has a 2.85 ERA in nine appearances -- eight starts -- against the Astros.
Astros: RHP Gerrit Cole (8-1) will make his 16th start of the season looking for his seventh straight win. Cole walked a career-high five and allowed four runs for a second straight outing in earning a no-decision Monday against the Rays.
Gordon homers, 4 Twins get 3 hits, Minnesota tops Cubs 9-5
— Nick Gordon hit a two-run homer and two singles, Josh Donaldson and Max Kepler each had three hits and two RBI, and the Minnesota Twins beat the Chicago Cubs 9-5 on Tuesday night.
Nick Gordon smacks 2-run HR in Twins' win
Nick Gordon hits a two-run home run to center field in a 9-5 win over the Cubs.
Cards win 10th in row, beat Brewers to extend wild-card lead
— Cardinals closer Giovanny Gallegos fanned pinch-hitter Pablo Reyes for the final out and St. Louis won its 10th straight game, increasing its playoff lead by holding off the division-leading Milwaukee Brewers 2-1 Tuesday night.
Conor McGregor shows off his pitching form at Wrigley Field
Could the baseball mound be in the MMA star's future?
Wild card leader Red Sox beat stumbling Mets 6-3, 6th in row
— Xander Bogaerts hit a go-ahead, two-run homer in the fifth inning and a two-run double in the sixth, lifting the AL wild-card leading Boston Red Sox over the stumbling New York Mets 6-3 on Tuesday night.
Realmuto's 2-run triple in 10th leads Phillies past O's 3-2
— Bryce Harper put his head down and sprinted from first base as soon as J.T. Realmuto lined an opposite-field shot to right.