AUGUST 11, 2017 – The Netherlands international, who spent last season on loan with the Potters, joins on a five-year deal.
Last season, Martins Indi, 25, made 35 Premier League appearances and scored once as Stoke finished 13th.
Later on Friday, Stoke announced defender Marc Muniesa, 25, has joined Girona, promoted to Spain’s top flight last year, on a season-long loan.
“Bruno loved being with us last season and made no secret of his desire to move here permanently,” Stoke’s chief executive Tony Scholes said.
“We’ve had to be patient in our dealings with Porto but we’re really pleased with the outcome.”
Stoke begin their 2017-18 league campaign on Saturday, with a trip to face Everton.
This summer Mark Hughes’ side also signed defender Kurt Zouma on loan from Chelsea, while midfielder Darren Fletcher, defender Josh Tymon and winger Eric Maxim Choupo-Moting all joined on free transfers.