Terms of the deal were not disclosed but Cassels earned $1.225 million last season with the Calgary Flames. He scored 12 goals in 70 games last season and was a minus-11.
"Andrew is a proven centerman and we are pleased to add a player with his ability and character to our hockey club," said Canucks General Manager Brian Burke. "He is a hard-working, intelligent player and he adds experience and depth to our power play and center ice position."
A 10-year veteran, Cassels has posted three 20-goal seasons and scored 66 points for the Hartford Whalers in 1996-97. After that season, he was traded to Calgary in a deal for goaltender Trevor Kidd and left winger Gary Roberts. His best season was 1992-93, when he finished with 21 goals and 64 assists for 85 points.
Cassels qualified as an elected Group V Free Agent, which states a player can choose free agency if he has been in the league 10 years and makes less than the League average.
Cassels, 29, was the 17th overall pick of the 1987 draft by the Montreal Canadiens. He only played 60 games for Montreal before being traded to Hartford for a second-round pick in 1992, which turned out to be Valeri Bure.
The Canucks also lost farmhand Mark Wotton to the Dallas Stars as a Group VI free agent.