Toujours dans les ligues mineures le , Keppinger est transféré aux Royals de Kansas City en retour d'un autre joueur d'avant-champ, Ruben Gotay. Il dispute 22 parties avec Kansas City avant d'être transféré aux Reds de Cincinnati le en échange d'un lanceur des rangs mineurs, Russ Haltiwanger.
Reds de Cincinnati
Keppinger frappe dans une moyenne au bâton de ,332 en 67 parties pour Cincinnati en 2007 et affiche sa moyenne de présence sur les buts (,400) la plus élevée en carrière. Il dispute la majorité de ses parties au poste d'arrêt-court, devenant même le titulaire à cette position l'année suivante.
En 2008, il apparaît dans un total de 121 parties des Reds mais ne peut conserver le même rythme à l'attaque: sa moyenne chute à ,266. Il totalise cependant 43 points produits, son sommet personnel à ce moment.
Il se voit confier le deuxième coussin en 2010, saison où il frappe pour,288 avec un nouveau record personnel de 59 points produits en 137 parties jouées.
Opéré au cours de l'entre-saison pour une blessure récurrente au pied gauche, Keppinger rate l'ouverture de la saison 2011 des Astros[4] et ne rejoint l'équipe que le [5].
Giants de San Francisco
Keppinger passe aux Giants de San Francisco le en retour de deux lanceurs droitiers des ligues mineures, Henry Sosa et Jason Stoffel[6]. Il frappe pour ,255 avec deux circuits et 15 points produits en 56 matchs avec San Francisco.
Rays de Tampa Bay
Le , Keppinger signe une entente d'une saison avec les Rays de Tampa Bay[7]. Sa moyenne au bâton de ,325 à sa seule année avec les Rays est la meilleure de sa carrière. En 115 parties, il réussit 125 coups sûrs dont 9 circuits et fait marquer 40 points. Sa moyenne de présence sur les buts se chiffre à ,367.
White Sox de Chicago
Le , Keppinger signe un contrat de 12 millions de dollars pour 3 ans avec les White Sox de Chicago[8]. En 117 matchs en 2013, il maintient une moyenne au bâton de ,253 et égale son total de 40 points produits de la saison précédente avec les Rays. Les White Sox ayant entrepris une cure de rajeunissement et comptant sur plusieurs joueurs de champ intérieur moins âgés que Keppinger, la franchise décide de libérer le vétéran avant que son contrat n'arrive à son terme[9]. Il quitte Chicago à la mi-mai 2014 sans avoir joué un seul match depuis le début de la saison.