Cory Sullivan hit a go-ahead single in the eighth inning, Keppinger drove in a career-high four runs and the Astros snapped a five-game losing streak with a 7-3 win over the Colorado Rockies on Wednesday night.
After the game, the Astros waived the struggling Matsui, who was batting .141 this season and was hitless in his last 20 at-bats. The 34-year-old Matsui was in the last season of a three-year, $16.5 million contract that he signed in December 2007.
Keppinger came in hitting .270 for the season and .353 on the road, third-best in the NL. General manager Ed Wade said he'll take over the full-time duties at second base.
"Keppinger's performance from the very first day of the season has been very solid and gives us comfort at the position," Wade said.
Keppinger, who's played for four teams in just over three full seasons, is eager to embrace his opportunity and wants to hang on to his No. 2 spot in the batting order.
"That's why I'm here," he said. "I've always looked at myself as being a second baseman, and I've strived to be a starter. I don't know if they have named a starter, but if they keep running me out there and batting me in the 2-hole, that's fine with me."
Sullivan broke a 3-all tie with a two-out single off Esmil Rogers (0-2), scoring Tommy Manzella, who reached on Colorado's second error. Michael Bourn was intentionally walked to load the bases and Keppinger capped his big night with a three-run double to left.
"It was nice," Keppinger said. "I got the big hit there late in the game with two outs and gave us a little cushion going into the last inning. That's what we have been missing all year."
The Rockies have lost four straight road games.
"When you're scratching and clawing for every single run you can get," manager Jim Tracy said, "mistakes that get made become maximized big-time, and we were witnesses to something exactly like that."
Brandon Lyon (3-1) pitched a scoreless eighth and Matt Lindstrom finished for the Astros, whose 13 hits tied a season high. Houston salvaged a strong start from Felipe Paulino, who allowed two hits and struck out four in six innings.
The Astros immediately answered off Colorado starter Greg Smith, with Bourn leading off with a single and Keppinger driving him in with a double.
Houston loaded the bases with one out in the second inning, and Pedro Feliz scored on Bourn's groundout for a 2-1 lead. Hunter Pence beat out an infield hit in the third to load the bases again with one out, but Smith fanned Feliz and got Manzella to fly out.
Paulino retired seven in a row, but then began struggling with his command again in the fourth, giving up a single to Brad Hawpe and consecutive one-out walks to Todd Helton and Miguel Olivo. Hawpe scored to make it 2-all when Melvin Mora bounced into a fielder's choice.
Carlos Lee lined a 2-0 pitch into the left-field porch in the fifth inning, his fifth homer of the season and second in two games. Lee came into the game with only five hits in 26 at-bats against left-handed pitchers.
Paulino looked sharp again in the sixth, striking out Hawpe and Olivo. Left-hander Joe Beimel relieved Smith for the Astros' half of the sixth, and Jason Michaels pinch-hit for Paulino, who threw 100 pitches.
Barmes, playing second base, bobbled Manzella's two-out grounder off Rogers in the eighth and pinch-hitter Geoff Blum drew a walk.
"I make that play most of the time, if not all of the time," Barmes said, "and I missed it."
Sullivan then singled and Manzella sprinted home and slid in headfirst, just beating the throw from left fielder Seth Smith. The ball skipped away from Olivo, the runners advanced and Rogers intentionally walked Bourn to load the bases.
Keppinger followed with a three-run double to the left-field corner, giving Houston its highest run total since a 9-6 win in St. Louis last Wednesday.
Rockies OF Carlos Gonzalez went 0 for 5, snapping a 12-game hitting streak. ... The Astros improved to 13-3 when scoring four runs or more. ... Fowler made his first start since May 13. ... Lee has hit all five of his homers this month.