Odegaard spent the second half of last season on loan at the Emirates Stadium, making 20 appearances in all competitions and scoring two goals.
The 22-year-old Norway international returned to the Spanish capital hoping to be part of new manager Carlo Ancelotti’s plans but was left out of Real Madrid’s opening La Liga game last weekend.
Odegaard has now found a permanent home in Arsenal after spending loan spells at Heerenveen, Vitesse and Real Sociedad while on the books of Real Madrid, whom he joined in 2015.
Odegaard is Arsenal’s fourth summer signing, joining the likes of Ben White, Albert Sambi Lokonga and Nuno Tavares. The Gunners are expected to complete the signing of Sheffield United goalkeeper Aaron Ramsdale in the coming days.
Asked what Odegaard will add to his squad, Arsenal boss Mikel Arteta said: "A lot of things that he brought last season. He made us better, we needed more options and alternatives for creativity.
"He is still a really young man but he has huge experiences in clubs already and has unique talents for the way we want to play so I am really pleased the club have made the effort."
Odegaard will be unavailable to make his debut against Chelsea this weekend but could feature in Arsenal’s clash against champions Manchester City next week.
Odegaard is the captain for the Norway national team and has won 30 caps.