The German international, 24, has been repeatedly linked with a move to the Bernabeau this summer, and he has now officially signed for the Spanish giants until 2020 for an undisclosed fee.
Commenting on the deal, Bayern chief Karl-Heinz Rummenigge told the club's official website: "We would like to thank Toni for his time at Bayern Munich. We enjoyed some great successes together. We wish him and his family all the best in Madrid and at Real."
Kroos, who will be unveiled to Madrid fans at a ceremony later today, joined Bayern at the age of 16, making over 170 appearances in all competitions after initially breaking into the side in 2007.