It is 12-month extension for Kroos, a three-time Champions League winner with Real, after his previous deal had been due to run until the summer of 2022.
The German international will be 33 years of age by the time the contract expires and will take him through to the end of a ninth season in Madrid after joining the club from Bayern Munich in 2014.
Already a UEFA Champions League winner with Bayern as part of a historic treble in 2013, Kroos formed a crucial part of the Real side that dominated Europe with three successive continental titles in 2016, 2017 and 2018.
He has just come to the end of a disappointing fifth season with the club, but his place with Los Blancos has been secured for the next few years to come.
The contract extension will remove any doubt that Kroos could be part of a summer overhaul in the Spanish capital, with returning coach Zinedine Zidane expected to oversee a number of comings and goings before the start of the 2019/20 campaign. Gareth Bale and Luka Modric are two veterans who could depart the club this summer.