He ruptured his Achilles tendon during the final game of the 1997/98 season, which ruled him out of most of the following season. He returned to the starting line-up, as a right-back, on 4 April 1999, against Rangers, and scored the first of Saints' three goals in a 3–1 victory. Following a knee operation, Weir was preparing to return to first-team action against Aberdeen when he broke his nose (for the sixth time) in a training-ground collision with teammate Paddy Connolly. After getting back into the team, he was again injured in training (a broken jaw and cheekbone) which meant he missed more of the campaign.
A serious knee injury put Weir out of action until January 2004. He managed seven appearances before being injured again, but was able to play against Newcastle United in his own testimonial match in May, featuring as a young Newcastle side won 2–1 in front of just under 3,000 spectators.
Despite his numerous injuries, Weir, club captain for the majority of his time at St. Johnstone, made over 200 appearances for the Perth club, and received an award when he achieved the 200 mark in August 2001. With his playing days near an end, Weir became assistant manager, firstly, to John Connolly and then Owen Coyle.
After thirteen years with St. Johnstone, Weir became the manager of Montrose on 8 February 2007. In his first game in charge, on 10 February, the Gable Endies lost 1–0 at Berwick Rangers. Just over a year after signing a contract extension, Weir was sacked towards the end of September 2008 with Montrose third in the league.