The 27-year-old centre-half makes the move to The Hawthorns after making 198 appearances in all competitions for United.
It is understood the deal for the Northern Ireland international will cost the Baggies an initial £6million, rising to £8million with add-ons.
Evans won three Premier League titles after making his United debut in 2007 and has won 42 caps for his country.
“This is a great signing for the club,” head coach Tony Pulis told the official West Brom website.
“Jonny brings a lot of experience and will be a big player for us – he’s a player I’ve been watching for some time.
“We are delighted to have him on board.”
Evans fell out of favour under United manager Louis van Gaal, playing only 17 times last season, and did not make a single first-team appearance at Old Trafford this term.
“I hope to push the Albion up the league,” said Evans.
“It’s a new, fresh challenge for me. One I’m looking forward to.
“I know a few of the lads already and I spoke to a couple, who highly recommended the club.”