Source: Cardinals sign Felipe Lopez

The St. Louis Cardinals reached an agreement with free agent infielder Felipe Lopez on a one-year, $2 million deal, a source told ESPN The Magazine's Buster Olney.

The deal is still pending the completion of a physical, the source said.

Lopez batted .310, with a .383 on-base percentage, last season for the Diamondbacks and Brewers. The only other free agent on the market this winter who matched or beat him in both of those categories was Matt Holliday.

ESPN.com's Jayson Stark reported that Lopez fired his agent, Scott Boras, and signed on with the Beverly Hill sports Council on Feb. 12.

The 29-year-old Lopez was reportedly disgruntled over still finding himself without a team, just days before the beginning of spring training.