The deal is for three years, $4.5 million, a source told ESPN.com
Moen started last season in Anaheim, but was traded to San Jose where he had three goals and two assists in 19 games.
He had four goals, seven assists and 77 penalty minutes with the Ducks.
"Travis Moen is a character player," Canadiens general manager Bob Gainey said in a statement. "He is versatile, and he plays hard. His size and style will contribute to adding physicality to our team."
The 6-foot-2, 215-pound left wing blocked 78 shots and had 171 hits in 82 games last season.
In five NHL seasons, the 27-year-old has 56 points (29 goals, 27 assists) and 487 penalty minutes with the Chicago Blackhawks, Anaheim and San Jose.