The European champions did not confirm a transfer fee for the 18-year-old, but reports in Spain suggested Madrid would pay 3.9million euros (£3million) for the Balearic island-born player.
Asensio will pen a six-year contract at the Bernabeu, but will stay at Segunda Division side Mallorca for the remainder of the season.
Both clubs confirmed the deal in statements on their respective websites, with Mallorca's reading: "RCD Mallorca and Real Madrid have today reached an agreement for the transfer of Marco Asensio to the Madrid club.
"This agreement, beneficial for both parties and the player, includes his loan to Mallorca until the end of this season and, depending on various factors, the possibility of extending it for the next.
"Mallorca went to thank the player and Madrid for the inclination to play on the island, as a minimum, for the rest of this campaign."
For the big stories and the banter follow us on Twitter: @tribalfootball