As a young player, Stewart trained twice a week with Rangers while still at Craigmount High School. Manchester United signed Stewart as a professional in 1998. He made his senior debut for the club on 31 October 2000 against Watford. Later that season, it was agreed that Stewart and two other players (John O'Shea and Jimmy Davis) would be loaned to Belgian feeder club Royal Antwerp, but Stewart decided against the move, believing he would break into the first team more quickly by training with United. Initially, he filled in for a suspended Roy Keane. He struggled to hold down a first-team place, however, and had a disappointing loan spell at Nottingham Forest. His high-tempo style often included landing in trouble, regularly being booked or sent off.
In the summer of 2004, United manager Sir Alex Ferguson indicated Stewart had no future at the club and he was free to leave. Rangers initially showed interest, but after a two-week trial, he was sent back to Manchester. The cost of Stewart's contract with United was seen as a stumbling block to a transfer. A loan deal was reached with Stewart's boyhood favourites Hearts, with Stewart taking a substantial wage drop to facilitate the deal. Stewart failed to match expectations and at the end of a season disrupted by injury, Hearts allowed him to leave.
Desperate for continuity and regular football, Stewart expressed his wish to stay in Edinburgh and signed for Hearts' rivals Hibernian after negotiating the end of his Manchester United contract. After two seasons with Hibs, the club announced in April 2007 that his contract would not be extended and he was free to leave the club. He left Easter Road after the media reported that there was unrest amongst the Hibs squad. Stewart spent a week training with Roy Keane's Sunderland, but he did not earn a contract.
On 30 June 2007, Hearts introduced Stewart as a new signing, making him the only player since the Second World War to sign for Hearts, then Hibs and then return to Hearts. Stewart scored his first SPL goal for Hearts against Aberdeen on 12 August 2007. He also scored a penalty for Hearts in a 4–2 win over Rangers in September 2007.
Stewart was appointed Hearts club captain by manager Csaba Laszlo before the start of the 2009–10 season, following the departure of Robbie Neilson. He was sent off, for two bookable offences, 52 minutes into his first competitive game as captain. Stewart left the club by mutual consent on 13 May 2010.
Stewart then agreed a "lucrative" move to Turkish club Gençlerbirliği signing a one-year contract with the club with the option of a further two years. Stewart picked up an injury early into his spell at Gençlerbirliği, Stewart left the club in January 2011, claiming that they had not honoured his contract since suffering an injury early in the 2010–11 season.
Sky Sports reported on 6 February that Stewart had been given a one-week trial with Leeds United. He played part in a training ground friendly match against York City. Stewart's trial period with Leeds was extended, but he did not sign for Leeds and subsequently went on trial at Charlton Athletic. He agreed to sign for Charlton until the end of the 2010–11 season on 22 March.
While he was a youth player at Manchester United, Stewart won three caps for Scotland. He won a recall after an absence of six years for a friendly match against Northern Ireland in August 2008.
Stewart has occasionally worked as a football pundit, providing analysis of Scottish football for BBC Scotland, BT Sport and The Scottish Sun.
On 31 December 2014, Stewart announced via Twitter his intention to stand for election as a Scottish National Party MP in the Edinburgh West constituency in the 2015 UK general election. Michelle Thomson won the nomination and was subsequently elected to parliament. On 11 February 2016, Stewart appeared on Thursday Focus on MUTV (his former club's in-house TV channel) discussing his life, career and politics.