Marshall is a product of the Manchester City Youth Academy, which he joined when he was 11 years old. In the 2006–07 season, he made his debut for the club's reserve side in the Premier Reserve League North, scoring four goals in eight starts. He also scored the final goal as City beat Manchester United 3–1 in the final of the Manchester Senior Cup. At the end of the 2006–07 season, Marshall signed his first professional contract with Manchester City. In the 2008–09 season, he was given the squad number 46 and became a regular in the reserves. After scoring for the reserves and being named "Man of the Match" in their 3–0 victory over Newcastle United Reserves, on 29 January 2009 he signed for Championship club Blackpool on loan, initially for one month until 28 February, with the possibility of extending it until the end of the season. Blackpool's assistant manager, Steve Thompson, said of Marshall: "We have been watching Paul for a few weeks now and every time we have seen him play he has impressed us. He has a sweet left foot and has an excellent range of passing, he has a presence in midfield and I'm sure he will do well for us." Marshall said of the move: "Playing in the Championship will be good experience for me because it will also show Mark Hughes that I can do it in this league. If I do well here, he may think that I will be good enough for the Premiership when I go back." His debut for the "Seasiders" on 31 January against Crystal Palace at Selhurst Park lasted just five minutes, after goalkeeper Paul Rachubka was sent off three minutes into the match. Marshall was then brought off in a tactical substitution so that Matt Gilks could replace Rachubka in goal. His second appearance was as an 82-minute substitute against Doncaster Rovers on 7 February, after which he returned to Manchester. In March 2009, Marshall was sent out on loan to Port Vale, and made his debut the following day in the goalless draw at Bournemouth. He scored his first senior goal on 28 March, with a long range free kick in a 2–1 reverse at Chesterfield. He played a total of 13 games for the club. Marshall joined Scottish team Aberdeen on loan on 2 January 2010, and made his Scottish debut in a 1–0 win over Dundee United on the same day, claiming the assist for Charlie Mulgrew's goal. He returned to Manchester after a further eight appearances for the club. He signed with Walsall in June 2010, after friend Clayton McDonald recommended the "Saddlers". After 22 appearances he was released from the club twelve months later, as was McDonald. In July 2011, he had a trial spell at Rochdale, and impressed enough to earn an extended stay at the club. He was an 82nd-minute substitute for Joe Thompson in a goalless draw with Carlisle United at Spotland on 16 August; his only appearance for the club. He then spent a brief spell with Droylsden in the Conference North, also on non-contract terms. He began training with former club Port Vale in January 2012, and joined on non-contract terms on 14 February. He went on to play 15 games for the "Valiants" in 2011–12, but was not offered a new contract. He signed with Conference North club FC Halifax Town in July 2012. He moved up a division when he joined Stockport County in February 2013, again on non-contract terms. He scored his first goal for the "Hatters", a 30-yard strike, in 4–1 defeat to Mansfield Town at Field Mill. He played 11 games as County were relegated out of the Conference National in 2012–13. After being released from Stockport, he then returned to the Halifax Town on the back of their promotion to the Conference National. He made 39 appearances in the 2013–14 campaign, helping the club to qualify for the play-off semi-finals, where they were beaten by Cambridge United. He remained a key player in the 2014–15 campaign, scoring three goals in 42 appearances. He signed with National League North side Bradford Park Avenue in May 2015. Avenue finished 14th in the 2015–16 campaign. He signed with Nicky Law's Alfreton Town in October 2016. He played 25 games across the 2016–17 season as the "Reds" posted an 18th-place finish in the National League North. Marshall joined Curzon Ashton in May 2017. He made 24 appearances across the 2017–18 campaign as the "Nash" posted an 18th-place finish in the National League North, and was limited to just ten appearances in the 2018–19 season. On 31 July 2019, Marshall joined Northern Premier League Premier Division club Buxton on a non-contract basis. He moved on to Northern Premier League Division One North West side Mossley later in the year. He made just eight starts before the 2019–20 season was formally abandoned on 26 March due to the COVID-19 pandemic in England.
In July 2017, Marshall and two other men pleaded guilty to conspiracy to commit criminal damage for their part in two events in March and April 2015 which followed a dispute over parking tickets at a property in Moss Side.