Jon Heyman of MLB Network first reported the deal, noting that it's worth $14.3 million.
The Royals weren't in immediate danger of losing Moustakas, who is under team control through 2017, but he was the biggest piece they had yet to get under contract this offseason. Lorenzo Cain, who was also entering his final two years of arbitration, signed a two-year extension in January.
Alex Gordon, who has been with the Royals since 2007, decided against leaving via free agency and instead signed a four-year deal worth $72 million. All of the other core players who helped Kansas City win the World Series aside from Moustakas remained under contract at least through 2016.
Moustakas didn't seem concerned about something coming together, telling Jeffrey Flanagan of MLB.com he had discussed a two-year deal with the Royals.
The 27-year-old Moustakas has had one of the most fascinating career arcs in recent memory. He was Kansas City's No. 2 pick in 2007 and then looked like a bust as his OPS went from .708 in 2012 to .632 in 2014, which led to him briefly being sent down to Triple-A to fix things.
While the results weren't immediately apparent, Moustakas did show signs of life in the 2014 postseason with five home runs in 15 games. He carried those changes into 2015, posting career highs in batting average (.284), on-base percentage (.348), slugging percentage (.470) and home runs (22).
The Royals have built one of the most cohesive teams in Major League Baseball, using their financial resources wisely and developing talent in the minors. Moustakas is a perfect representation for this era of Kansas City baseball, making his contract extension an easy choice for the franchise.