Terms were not disclosed, but the Kansas City Star reported Gonzalez can make as much as $6 million with incentives.
After losing Raul Ibanez, who had 90 RBI last season, the Royals were shopping for an impact player to complement Mike Sweeney. Despite injuries over the last two seasons, Gonzalez is one of baseball's premier sluggers.
Gonzalez, 34, has hit 35 home runs and driven in more than 100 runs in a season seven times. Last year, in only 82 games, he had 24 homers and 70 RBI. In his last full season in 2001 for the Cleveland Indians, Gonzalez hit .325 with 35 home runs and 140 RBI.
A three-time All-Star, Gonzalez spent 13 of his 15 seasons with the Rangers and has 429 home runs, 1,387 RBI and a career .296 batting average. He also played for the Detroit Tigers in 2000 and Cleveland in 2001.
Gonzalez was named the American League MVP in 1996 and 1998 with Texas. He belted a career-high 47 homers in 1996 and drove in a career-high 157 runs in 1998.