HOUSTON -- Houston's Lance Berkman needed to drive in one run to become the third player in franchise history to reach 1,000 RBIs.
The Astros needed all of the season-high four RBIs he had on a pair of homers to overcome an error-filled day and beat the Kansas City Royals 5-4 on Thursday.
He reached the milestone on his first at-bat, a two-run shot to far left field that gave Houston a 2-1 lead and put him with fellow "Killer Bs" Jeff Bagwell and Craig Biggio as the only Astros to reach the mark.
He pushed his total to 1,003 in the sixth inning with a drive to almost the same spot, scoring Carlos Lee and putting Houston back on top 5-4.
Berkman hoped he helped redeemed himself on Thursday after committing a key ninth-inning error the night before in an 11-inning loss.
"That's good for my psyche after wearing the goat horns last night with that error," he said.
The win was Houston's first of this interleague series and kept the Royals from sweeping the Astros for the first time in their eight series history.
Closer Jose Valverde pitched a perfect ninth for his sixth save, a day after blowing the save against the Royals. Wesley Wright (2-1) got the win after getting four outs after starter Brian Moehler left after five innings.
Houston had some fielding trouble between Berkman's two long balls, combining for three errors that led to three runs in the fourth and fifth innings and allowed the Royals to take a 4-3 lead.
"The defense has been terrible," Berkman said. "Cost us the game last night and today it could have cost us the game. We've got to figure something out -- a little more intensity, a little more concentration. You can't give teams extra outs and expect to win."
Houston's trouble began in the fourth inning. First, Guillen reached on a throwing error by Jeff Keppinger that sent Alberto Callaspo to second. On the next play Miguel Tejada couldn't handle the throw to second and watched as Guillen advanced there and Callaspo scored.
Royals manager Trey Hillman thought that play was key in the game.
"We put up a two ... when we should have put up four," Hillman said. "We've got to get more in that inning. We had every opportunity to sweep this series and didn't take advantage of it offensively and made pitching mistakes, location on the mound."
Houston tied it 3-all in the bottom of the fourth on a sacrifice fly by Kazuo Matsui that scored Lee.
Houston's fielding woes continued in the fifth when David DeJesus scored on an error by catcher Humberto Quintero that made it 4-3. Hunter Pence caught a fly by Guillen with runners on second and third before throwing to Quintero at home. DeJesus rushed back to third on the throw which left Willie Bloomquist stranded between second and third.
Quintero's high throw to a leaping Tejada at second bounced off the top of his glove and sent him tumbling backward to the ground, losing his cap and the ball in the process. DeJesus scored easily and Bloomquist had waltzed to third by the time Tejada got up shaking his head in disgust.
"We get a high throw at second, we get a dropped throw at second, it was just kind of a comedy of things," Houston manager Cecil Cooper said. "But we played through it and I think that was the key."
Guillen doubled in the second before scoring on a single by Teahen to give Kansas City a 1-0 lead.
Moehler allowed five hits and four runs -- one earned -- in five innings.
Bannister (5-5) allowed six hits and five runs in six innings for Kansas City.
Houston RHP Felipe Paulino, who is on the disabled list with a strained right groin, is tentatively scheduled to start on Saturday. ... Houston LHP Mike Hampton, on the disabled list with a left groin strain, is scheduled to throw two or three innings of a simulated game on Friday. ... Royals reliever Kyle Farnsworth, who suffered a right groin injury Wednesday, underwent tests on Thursday in Houston but Hillman hadn't yet received the results after the game.