Morris signed for Scottish side St Johnstone, then in the First Division, on a short-term deal at the end of February 2008, playing under Derek McInnes, his former teammate at Millwall during the 2006–07 season. He scored a goal on his debut against Dundee. He played in the club's Scottish Cup semi-final defeat to Rangers in April 2008 but was one of two Saints players to miss in the penalty shoot-out. After a successful five months at McDiarmid Park, Morris signed a two-year deal with the Perth side at the end of the season. He was part of the title-winning team that in May 2009 gained promotion to the Scottish Premier League after a seven-year absence. Morris signed a new contract with Saints in October 2009, while Derek McInnes praised his influence on the squad. After McInnes left St Johnstone to manage Bristol City in October 2011, Morris assisted caretaker manager Alec Cleland with the coaching of the squad.