HOUSTON -- The way the Kansas City Royals' season has gone, Doug Mientkiewicz doubted his fly ball in the ninth inning would actually be a home run.
For a change, the Royals got the luck they needed.
Mientkiewicz's three-run shot lifted the Royals to a 7-4 win over the Houston Astros on Sunday.
"I didn't think it was going out," said Mientkiewicz, who homered for just the second time this season. "That's the way the season has gone. When it headed out there, I just thought, 'Here we go again."'
Instead, the Royals took two out of three from the Astros, finishing a seven-game road trip with an encouraging 3-4 mark.
"We've played really well on this trip," Royals manager Buddy Bell said. "That's the important thing."
John Buck and Reggie Sanders also homered for Kansas City, which snapped a three-game home-run drought. The Royals also extended their error-less streak to eight games, a season high.
The Royals blew a 4-1 lead, but rallied off Houston reliever Chad Qualls (3-2) to win for the third time in nine games.
"This should give us some momentum," said Buck, "and any momentum we can get, we've got to take it and run with it."
Preston Wilson homered and Chris Burke had three doubles for the Astros, who lost for the third time in 12 games.
After winning their first seven series at Minute Maid Park, the Astros have dropped three of their last six.
"This was not what we expected this weekend," Burke said.
Kansas City salvaged a solid start from Brandon Duckworth, who was acquired from Pittsburgh on June 10. Duckworth scattered six hits and allowed two runs in his second start with Kansas City. He had a similar line in Anaheim on Wednesday, but the Royals lost 4-1.
"He's got real ability," Bell said. "He's able to muscle up, at times, and get a little more on his fastball. Our pitching has been pretty good on this whole road trip."
Emil Brown started the one-out rally off Qualls with a double over Burke's head in center field. Matt Stairs drew a walk, bringing up Mientkiewicz, who had one extra-base hit in his last 14 games.
Mientkiewicz battled Qualls to a 3-2 count, then pounded a fastball into the right-field seats, just over the head of backup right fielder Orlando Palmeiro.
"The pitch wasn't exactly where I wanted it to be," Qualls said. "It was up and over the plate. He probably was looking fastball in that situation, so obviously, I wanted to get the ball lower than that."
Jimmy Gobble (2-1) pitched a scoreless eighth and Ambiorix Burgos shut out the Astros in the ninth to earn his 10th save, another reassuring sign for Bell.
"Burgie had a clean inning for a change," Bell said with a wry smile. "We don't get too excited anymore when he does that -- but it's nice when he does."
Duckworth and Astros starter Andy Pettitte dominated the first four innings, giving up two hits apiece.
Duckworth retired seven straight after Burke's double to left in the first inning. Burke doubled again in the fourth, but Duckworth struck out Lance Berkman and got Morgan Ensberg on a weak bouncer to end the inning.
Pettitte allowed singles to Tony Graffanino and Buck and struck out three in the first four innings.
Wilson led off the Astros' fifth with a towering blast off the brick facade in left, his seventh homer of the season. Wilson has 10 RBI in his last nine games with hits in 20 of his last 26 starts.
Brad Ausmus followed with a double to right-center. Adam Everett then singled to left and moved to second on Pettitte's sacrifice bunt.
Duckworth pitched out of it, though, getting Craig Biggio on a popup before striking out Mike Lamb.
Pettitte wasn't so lucky in the Royals' sixth.
Buck led off with a homer just over the wall in right and Duckworth followed with a double to left.
Esteban German moved Duckworth to third with a bunt before Mark Grudzielanek doubled over Burke's head in center. Sanders then hit his ninth home run of the season to the right-field seats for a 4-1 lead.
Pettitte got out of the inning, then covered his face with his glove and chastised himself on the way back to the dugout.
"It's another frustrating day," said Pettitte, who's 6-7. "It's a shame to give up four runs there in that inning, the way I felt. The pitches weren't mistakes. I need to figure out a way not to give up four runs in one inning."
Pettitte has given up 17 home runs this season, equaling his total for all of last season. ... Berkman has a seven-game hitting streak and has hit safely in 10 of his last 11 games. ... The Astros turned a double play in the second inning, pushing their NL-leading total to 84.