The 30-year-old has joined the Saints as a delisted free agent, signing a one-year contract.
The move comes after St Kilda failed to land Kangaroos tall Tristan Xerri during last month's trade period.
Campbell will support first-choice ruck duo Paddy Ryder and Rowan Marshall after Paul Hunter, Sam Alabakis and Shaun McKernan all departed.
"We're really pleased to have signed Tom for 2022," Saints list boss James Gallagher said.
"Stability in our ruck is extremely important for us, and we believe Tom will provide important depth, competitiveness and flexibility to allow us to maintain our structure next season.
"Tom is known for his professionalism and team-first approach and will no doubt be a great influence on our young and developing players."
Campbell has played 54 AFL games - 12 for North Melbourne and 42 for the Bulldogs - since being selected in the 2011 rookie draft.
He was delisted by the Kangaroos last month after playing nine games this year.
St Kilda are looking to bounce back in 2022 after tumbling down the ladder last season, finishing 10th with a 10-12 record.