O’Donnell has signed a three-year contract after leaving Luton.
The 25-year-old made 72 appearances for the Hatters after leaving Firhill two years ago but was not offered a new deal.
Manager Lee McCulloch told the club’s official website: “I’m totally delighted to have Stephen on board. I see this as a real coup for the club, he’s an athletic player that wants to get better every day.
“He has shown that he can play very well in this league and has gained invaluable experience down in England and will fit in well with the club’s playing style.”