The World Cup-winning tighthead prop played Super 14 rugby with the Sharks and has been capped 26 times by South Africa. He made his Test debut against New Zealand in Pretoria in 2006.
He last played for the Sprinboks against Australia in the Tri Nations game played in Brisbane last July.
Commenting on the news, Munster head coach Tony McGahan said: "We are delighted that BJ Botha has opted to join Munster. He is a player of the highest calibre who we believe will add significantly to our squad."