The 26-year-old, who had six months remaining on his previous deal with Torquay, missed the majority of last season with an Achilles injury.
"Ian is a very good player and I have followed his career closely," Northampton boss Aidy Bothroyd told the club's official website.
"He has always impressed me when I have seen him and I am pleased we have been able to bring him to the club. He can play in a number of positions and he has the experience of having played more than 200 games despite only being in his mid-20s.
"He is a winner, he has already won three promotions in his career and he has experience of playing in the Championship, League One and League Two. He is another player who will be a good addition to the squad and I am delighted we have got him."
Morris joined Torquay two years ago.