Santana (4-5) entered the game with the worst run support among qualifying pitchers in the American League, a big reason why he already had six fruitless tries to win his 100th career game.
He finally reached the milestone thanks to a seemingly endless series of singles and doubles off Astros starter Erik Bedard (1-3), who failed to make it through the fifth inning.
Meanwhile, Santana allowed five hits in seven innings, striking out six without a walk. The only damage he allowed came on an RBI single by Jose Altuve and a solo homer by Chris Carter.
Lorenzo Cain had a pair of RBIs to lead the Royals.
Kansas City had been averaging 2.68 runs per nine innings in games Santana started, and it hadn't scored more than four runs for him before Saturday night.
But the offense has been coming alive in the nine games since Hall of Famer George Brett took over as interim hitting coach. The Royals have put up at least four runs in each of their four wins, and that's no negligible feat: They improved to 20-5 when scoring at least four times.
The result of the Royals' recently ramped up production has been just their third four-game winning streak of the year and their first since April 30-May 5.
It didn't take long for them to strike Saturday night, either.
David Lough led off the game with a single and motored into second when centerfielder Brandon Barnes bobbled the ball. Lough scored on a base hit by Salvador Perez, and he in turn came around on a double by Hosmer that was helped into the left-field corner by some gusting wind.
The Royals added three more in the fourth when Bedard put the first five batters on base. The runs came on an RBI single by Miguel Tejada, a runs-scoring double by Jeff Francoeur and a bases-loaded, double-play groundout by Lough that made it 5-0.
Kansas City tacked on another in the fifth when Hosmer worked a two-out walk and Cain hit a two-out pitch into the gap in right, knocking Bedard from the game.
It was a forgettable 200th career start for the left-hander, who gave up six runs in 4 2-3 innings. It certainly bore little resemblance to his last time out, when Bedard allowed just one run over seven innings in a win over the Angels.
Santana had no such trouble against the light-hitting Astros, who only had one hit over the first five innings and didn't push a run across until there were two out in the sixth.
Carter's homer came in the seventh inning.
Otherwise, Santana was in control all night. He struck out at least one in each of the first five innings, and picked up his first victory since beating Cleveland on April 27.
Houston CF Brandon Barnes left in the sixth with tightness in his left hamstring. ... The Astros claimed LHP Wade LeBlanc off waivers from Miami. Manager Bo Porter plans to use him out of the bullpen when he arrives Sunday. ... Royals LF Alex Gordon got his first night off of the season. He's in a 3-for-30 slump. ... Houston RHP Lucas Harrell goes to the mound in the series finale Sunday against Royals RHP Luis Mendoza.