Terms were not disclosed but the contract is worth $4 million, according to multiple reports.
Gordon, who has spent his entire career with the Royals organization, became a free agent this past November when Kansas City declined its half of his $23 million mutual option for 2020.
One of the club's most popular players, Gordon said late last season that he was leaning toward returning in 2020 but wanted to spend some time discussing his future with his family. The move also had to make financial sense for the Royals, who signed him to a $72 million, four-year contract in January 2016.
Gordon will likely return to right field but also have some designated hitter duties. Whit Merrifield will handle center field and Hunter Dozier will move from third base to right field after the club signed free agent Maikel Franco to fill out his spot on the left side of the infield.
"So excited to have this guy back on the field and in the clubhouse,'' Merrifield tweeted.
Gordon, who turns 36 next month, batted .266 last season with 13 homers and 76 RBIs for the rebuilding Royals, who topped 100 losses for the second straight season.
The outfielder is a career .258 hitter with 186 homers and 738 RBIs.
Selected by Kansas City with the No. 2 overall draft pick in 2005, Gordon is a three-time All-Star and seven-time Gold Glove winner. He helped the Royals win the 2015 World Series for their first title since 1985.
Right-hander Heath Fillmyer was designated for assignment in a corresponding move.
The Associated Press contributed to this report.