Born in Glasgow, he was included in St Mirren's matchday squad for the first time on 18 October 2014, remaining on the substitutes' bench as they lost 0–1 at home against Inverness Caledonian Thistle in the Scottish Premiership. On 8 November, he was again unused as they lost by the same score against Partick Thistle, again at St Mirren Park. His debut came two weeks later as St Mirren lost 0–3 away to Hamilton Academical, starting and making way for James Marwood after 68 minutes. Mallan scored his first goal on his fifth appearance, the team's second in a 3–1 away win against Dundee at Dens Park. BBC Sport described the goal as a "contender for goal of the season". Mallan was subsequently presented with the PFA Scotland'Goal of the Season' award for that effort. Mallan also won the SPFL Young Player of the Month award for December 2014. Eight days later he scored his second goal, the 87th-minute winner in a 2–1 victory at Ross County. Later in January, Mallan signed a three-year contract extension with St Mirren. He scored a late winning goal against Motherwell on 16 May, but St Mirren had already been relegated to the Championship. On 25 August 2015, Mallan equalised with a 25-yard free kick in first-half added time in a Scottish League Cup second-round game against Livingston, but his team lost 2–3 at home. He scored twice in a 4–0 win over Dunfermline Athletic on 10 October to send his team into the semi-finals of the 2015–16 Scottish Challenge Cup. In October 2016 at Easter Road, he scored a "magnificent" free kick from 30 yards to help St Mirren eliminate Hibernian from the Challenge Cup. Mallan left St Mirren after the 2016–17 season, having made over 100 appearances for the club.
Barnsley
On 18 May 2017 Mallan completed a transfer to EFL Championship side Barnsley for an undisclosed fee. He made his competitive debut against Preston North End on Boxing Day in a 0–0 draw. Mallan made only nine appearances for Barnsley during the 2017–18 season, as they were relegated to EFL League One.
Hibernian
Mallan returned to Scottish football in July 2018, moving to Premiership club Hibernian for an undisclosed fee on a 4-year contract. He made his debut for the club on 12 July in a 2018–19 UEFA Europa League qualification tie at home to Faroese side NSÍ Runavík, scoring twice in a 6–1 Hibs win. Mallan had a productive first season with Hibs, scoring 13 goals in 48 appearances. After 3 goals in 26 appearances during the first part of the 2019–20 season, he suffered a knee injury in late December.