Ross came through the youth ranks at Inverness Caledonian Thistle and ahead of the 2009–10 season, manager Terry Butcher stated Ross was among several youngsters selected for the first team squad. He made his debut for Inverness Caledonian Thistle in a match against Montrose, as Inverness won 5–3 on penalties, following a 1–1 draw in the first round of the Challenge Cup. His league debut came in a 0–0 draw against Ayr United on 15 August 2009. Ross then scored his first goal for the club against Greenock Morton, in a match Inverness won 1–0. Partly as a result of scoring his first goal, Ross's anticipated move to a club on loan was deferred. Days after scoring his first goal, he helped the club win the Inverness Cup after beating Clachnacuddin. Despite making only six appearances, he played a part in Inverness achieving promotion back to the Scottish Premier League. He started more games for Inverness throughout the following season, putting in some good performances and becoming a first team regular. Ross was offered a new deal by the club and he signed a two-year contract. On 4 May 2011, Ross provided the 'assist' for the winning goal, from Shane Sutherland, in a 3–2 victory over Celtic. A week later, he scored his first SPL goal, a 20-yard volley in a match against Hibernian. He made thirty-four appearance, despite being sidelined twice through injury. Ross found himself more on the bench in the 2011–12 season. Despite this, he scored his second SPL goal in a 3–1 loss against Dundee Unitedin September 2011. Unfortunately, in late October, Ross was sidelined, when he sustained a groin injury. However, later in the campaign, on 17 February 2012, he scored his second goal of the season, in a 1–1 draw against Dunfermline Athletic. Ross scored in the opening game of the 2012–13 season, a 1–1 draw against St Mirren. He suffered a serious injury during a match against Celtic, dislocating his shoulder and eventually had to undergo an operation. Manager Butcher announced that Ross would be out for three months, which he described as a "massive blow". Whilst on the sidelines, Ross signed a new two-year contract with the club. He made his return, on 29 December 2012, when he came on as a late substitute for Billy McKay, in a 0–0 draw against St Johnstone. Despite his successful return, Ross stated that he was working hard to improve his strength and fitness. Later in the season, he scored two goals in two games, netting against Celtic on 9 February 2013 and also against Kilmarnock, four days later. In April, Ross 'called' for the club to push on, and seal a Europa League place for the first time ever, but ultimately, Inverness narrowly missed out on that target. Ross started his 2013–14 season with an 'assist' for Aaron Doran, in a 2–2 draw against Celtic on 24 August 2013. Following the departure of Terry Butcher, Ross scored his first goal of the season, in a 2–0 win over Hibernian on 9 November 2013. In the fourth round of Scottish Cup, Ross scored another, in a 4–0 win over Greenock Morton.
Then, in the semi-final of Scottish League Cup against Hearts, Ross came on as a substitute in the last few minutes and scored a dramatic equaliser, sending the match into extra-time. He then converted the fourth penalty in the subsequent penalty shoot-out, helping Inverness to win and reach the final. A few weeks later, on 18 February 2014, Ross scored in a 2–0 win over Stranraer to send Inverness through to the next round of the Scottish Cup. He played in the final of the Scottish League Cup, when he came on as a substitute for Marley Watkins in the 80th minute. Ross then converted the fourth penalty in the penalty shoot-out, as Inverness CT lost 4–2 on penalties, after extra-time, against Aberdeen. Ross was predominantly used as a substitute by new manager John Hughes. Despite this, he stated his desire to sign a new contract with the club and fight to regain his place in the team. Ross continued to be mainly used as a substitute in the 2014/15 season. One of those substitute appearances was in the 2015 Scottish Cup Final, in which Ross replaced Marley Watkins during time added on at the end of the match. At the end of the season, he left Inverness under freedom of contract.
Dundee
Ross signed a two-year contract with Dundee in June 2015. Ross scored his first goal for the club in a 2–1 victory against rivals Dundee United on 2 January 2016. He left Dundee after the 2016–17 season, at the end of his contract.
After he left Dundee, Ross trained with Inverness Caledonian Thistle to maintain his fitness. He played as a trialist in a charity game against local rivals, Ross County, on 8 November 2017. In February 2018, he signed a short-term contract with Romanian club Sepsi OSK.
After a somewhat unsuccessful time in Romania, Ross returned to the Highlands with Highland League side, Brora Rangers in October 2018 with the hope of securing a full-time contract in the coming weeks.
El Paso Locomotive
After a brief stint with Brora Rangers, Ross signed for American side El Paso Locomotive on a one-year deal with the option of a further year.