The 29-year-old has spent the past two seasons at the Britannia Stadium since moving from Reading.
He made just one first-team appearance for the Potters last term - in the Carling Cup win at Leyton Orient - and played nine times in a loan spell at Hull.
Pompey boss Steve Cotterill told the club's official website: "He's a big, strong and very powerful defender. I've followed him for a while and I thought he did a fantastic job at Reading.
"He's been a bit unlucky during his time at Stoke and hasn't had too many first-team opportunities, although he did spend time on loan at Hull last season. He just needs to get back playing football.
"We're very thankful to Stoke's chief executive, Tony Scholes, and to Tony Pulis for their help."