At the 2004 trading deadline, while Keppinger was in double-A ball, he was traded to the Mets as part of the Kris Benson for Ty Wigginton trade. His average soared even higher with the double-A Binghamton Mets and stayed above.300 with the triple-A Norfolk Tides earning him a call to the majors on August 20. He responded by hitting.284 with three home runs and nine RBI in 33 games played. In 2005, Keppinger again excelled in Norfolk while hitting.337. He was poised to return to the majors in June when Kazuo Matsui was injured, but bad luck struck when Keppinger fractured his kneecap around the same time as Matsui. The injury not only prevented his return to the majors but ended his entire 2005 season.
On July 19, 2006, Keppinger was acquired by the Kansas City Royals for middle infielderRuben Gotay and Keppinger was sent to Triple-A Omaha. Keppinger was called up by the Royals in August 2006. With a season-ending injury to starting third baseman Mark Teahen, Keppinger was expected to see some major league action. A key moment in his career occurred on September 9, 2006 at Boston's Fenway Park, when, after entering the game against the Red Sox as a pinch runner, he came to bat in the top of 12th inning in a 4-4 tie game with two runners on. Keppinger, batting against Manny Delcarmen, hit a ball just to the left of the right field foul pole for a three-run home run, breaking the 4-4 tie. The Royals went on to beat the Red Sox in that game 10-4.
Cincinnati Reds
On January 2, 2007, Keppinger was designated for assignment by the Royals. Eight days later, Keppinger was traded to the Cincinnati Reds. In return, the Royals received Minor League pitcher Russ Haltiwanger. On May 13, 2008, Keppinger fractured his patella in the second inning of a game against the Florida Marlins, placing him on the 15-day disabled list. On June 22, 2008, he returned, much to the joy of the Reds who had just recently lost another shortstop to injury in Jolbert Cabrera. In 2008, he had the lowest strikeout percentage in the majors, at 4.8%, striking out once only every 19.1 at-bats.
Houston Astros
On March 31, 2009, Keppinger was traded to the Houston Astros for minor league infielder Drew Sutton. Keppinger saw a majority of his playing time at third base, filling in for Geoff Blum while he was injured. Still versatile, Keppinger also played shortstop, second base, and first base during the '08 and '09 seasons. Keppinger began the 2010 season with the Astros as the primary backup at second base to starter Kazuo Matsui. However, after Matsui's offense proved inept after 71 at-bats, Keppinger was named the starter after Matsui was released by the Astros on May 19, 2010.
San Francisco Giants
On July 19, 2011, Keppinger was traded to the San Francisco Giants for pitchers Henry Sosa and Jason Stoffel. He hit a walk-off single against his former team, the Houston Astros, on August 27 and 28, 2011.
On January 26, 2012, Keppinger was signed to a 1-year deal with the Tampa Bay Rays. The deal became official the next day. Keppinger had a good season as a utility infielder, playing first, second and third base throughout the season. Over 115 games, Keppinger batted.325 in 385 at-bats. He also hit 9 home runs and 40 RBI with an OPS of.806. On May 19, Keppinger broke his big right toe while sitting in the dugout. A foul ball from Martin Prado struck Keppinger on the foot and he subsequently missed over a month. Keppinger became a free-agent at the end of the season.
Chicago White Sox
On December 10, 2012, Keppinger signed a 3-year, $12 million deal with the Chicago White Sox. He was designated for assignment on May 14, 2014. On May 21, the White Sox officially released Keppinger.