Zenit agree deal for Bruno Alves
The deal is subject to the 28-year-old passing a medical at the Russian club, Porto added in a statement on Tuesday.
Alves joined Porto in 2000 but only won a regular first-team place in 2005 after three loan spells, including a year at Greek side AEK Athens. He went on to play 120 times and score 14 goals for Porto, winning four consecutive Portuguese titles.
The tall and aggressive player, who was made club captain in 2009, has become one of Europe's top central defenders after several eye-catching performances in the Champions League.
His displays led Luiz Felipe Scolari to give him his Portugal debut in June 2007 and he became a regular in the World Cup qualifiers, scoring twice to earn important wins.
He played every minute of Portugal's four games at the tournament in South Africa, taking his tally of caps to 35.
Zenit, who are top of the Russian championship with 39 points from 15 games, already have Portugal winger Danny and defender Fernando Meira on their books.