Bruno Martins Indi has completed his £7m move from Porto to Stoke.
The Netherlands centre-back, who spent last season on loan at the Potters, has signed a five-year deal at the bet365 Stadium.
He will not feature for Stoke in their opening match of the new Premier League season away at Everton on Saturday as the paperwork for the deal was submitted after the midday deadline.
Chief executive Tony Scholes told the club's website: "We are delighted to have secured a deal to bring Bruno to the Club in a permanent transfer and I know that Bruno feels the same.
"Bruno loved being with us last season and made no secret of his desire to move here permanently when his loan spell came to an end. We've had to be patient in our dealings with Porto but we're really pleased with the outcome."
Martins Indi made 35 appearances last season as Stoke finished 13th in the Premier League.