Gordon's contract also includes a mutual option for the 2020 season, the team said. The deal, which is pending a physical, is worth $72 million, a source told ESPN's Buster Olney.
The contract's value makes it the largest in franchise history, trumping $55 million deals given to Mike Sweeney and Gil Meche.
"I mean, we all wanted to make it fair for both sides," Gordon said. "It was definitely a process, but we got to that point, and I'm happy with where I'm at now."
Multiple teams had been linked to Gordon, who last season helped lead the Royals to their first World Series title since 1985.
Gordon recognized the interest he drew from other teams and how, at the end of the process, he wanted his time in Kansas City to continue.
"We've been here for 10 years and really established our home here," Gordon said. "So coming into the offseason, we were very appreciative of all the teams that showed us interest.
"But at the end of the day my heart has always been, and I think always will be, in Kansas City.''
Royals general manager Dayton Moore talked of Gordon's tenure with the team and his crucial role within it.
"Alex is one of the greatest players and stories I've been around in the game, how he persevered and the changes he made and how he did it and how he led, and he didn't complain.," Moore said. "He just went to work and made himself an All-Star, a Gold Glove winner. ... He is a pillar of our clubhouse and our organization, no doubt."
Gordon played in only 109 games last season because of injuries, batting .271 with 13 homers and 48 RBIs. He is a .269 hitter with a .783 OPS in nine seasons, all with the Royals.
Gordon hit just .241 with two home runs in the postseason, but one of those homers rescued the Royals from a likely defeat in the opening game of the World Series. Gordon tied the score in the ninth inning of Game 1 with a homer off New York Mets All-Star closer Jeurys Familia, before Eric Hosmer's 14th-inning walk-off sacrifice fly gave the Royals a 5-4 win.
Gordon, a three-time All-Star, is also considered one of the best defensive left fielders in the game, having won four Gold Gloves.
On Nov. 4, Gordon declined his 2016 player option, worth $13.75 million with postseason escalators included, to test free agency for the first time before his age-32 season. Gordon signed a four-year, $37.5 million contract before the 2012 season.
Gordon had been one of the top free-agent outfielders available, along with Yoenis Cespedes. Other big names out there are first baseman Chris Davis, outfielders Justin Upton and Dexter Fowler and left-hander Wei-Yin Chen.
The Associated Press contributed to this report.