After starting in youth football with his hometown boys club, Motherwell Orbiston, Weir signed professionally with Hamilton Accies in 1987. He spent six years at Douglas Park, making close to 200 league appearances for the club, before joining Premier League Hearts, then under the guidance of Sandy Clark. Weir's stay at Tynecastle was brief and he moved to St. Johnstone within a year, signed by Paul Sturrock in a swap deal that saw Colin Miller move in the other direction. 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 in a training-ground collision with teammate Paddy Connolly. After getting back into the team, he was again injured in training 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 his senior career, Perth-based Weir played Junior football for local sides Bankfoot Athletic, Luncarty and Kinnoull in between managerial appointments.
Managerial career
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. After the resignation of John McGlashan, Weir became the manager of Arbroath on 1 November 2009. Weir failed to save Arbroath from relegation in the 2009–10 Scottish Second Division, as they finished ninth and were beaten by Forfar Athletic in the play-offs. The Lichties also lost to junior club Irvine Meadow in the 2009–10 Scottish Cup. Weir joined Brechin City on 24 May 2010. Brechin finished fourth in the 2010–11 Scottish Second Division, qualifying for the promotion play-offs, but lost in the final to Ayr United. Weir was sacked by Brechin in September 2012 after the club had made a bad start to the 2012–13 Scottish Second Division. Weir was appointed manager of Scottish League Two club Elgin City in November 2014. After nearly three years in charge, Weir moved to Forfar Athletic in October 2017. Weir was involved in a car crash after a training session in September 2019. He left the club on 3 November, as he struggled to combine his work commitments and recovery from the car crash.