The Spaniard has penned a four-and-a-half year contract which runs until 2023.
Otto becomes the third most expensive player in Wolves' history, behind Ruben Neves (£15.8m) and Adama Traore (£18m).
He only joined Atletico last summer for around £6m from Celta Vigo and, like Diogo Jota, moves from Atletico to Wolves having never played for the club.
Otto has played 22 times for Wolves in all competitions, scoring one goal in a 2-0 win over Southampton.
His performances earned him his first ever cap for Spain in October and two more appearances have followed.
The 24-year-old is likely to be Wolves' only senior addition during the January transfer window.
Wolves have no move for a new striker currently on the table. After a move for Villa's Chelsea loanee Tammy Abraham fell through, it's thought Wolves haven't come close to finding a suitable back-up, with Nuno Espirito Santo adamant that any new striker must be as good as or better than what they already have.
Molineux officials, though, aren't giving up hope that something may arise on the final day and are continuing to search the market looking for a last-minute deal to bolster the squad.
They have been strongly linked with a move for Iranian striker Sardar Azmoun from Rubin Kazan. It's believed Wolves were interested in a loan move with an option to buy, but Rubin Kazan insisted on an obligation to buy and the move has been shelved.
Several fringe players are expected to leave today including Leo Bonatini, who has interest from Championship clubs including Nottingham Forest as well as overseas clubs.
Dominic Iorfa is mulling over a move to the MLS, while Donovan Wilson, Connor Ronan and Joe Mason will also look to secure deals.