Bugg was born to Jim and Kerry Bugg (née Ramage) in Melbourne, Victoria; and played his junior football career with the Gembrook Cockatoo Junior Football Club and Beaconsfield Football Club before joining the Gippsland Power in the TAC Cup as a bottom-aged player in 2010 where he played eight matches and kicked two goals, including the grand final loss against the Calder Cannons. He received state honours in 2009 when he played for Vic Country in the under 16 championships, and received a scholarship within the prestigious AIS/AFL Academy as part of the their 2009 intake. He was again selected for Vic Country in 2010, this time in the AFL Under 18 Championships and played his best game for the series against NSW/ACT, where he was named in the best players. In October 2010, he signed a three-year contract with the Greater Western Sydney Giants (GWS) as an underage recruit, which was a special recruitment process allowed by the AFL Commission where GWS could sign twelve players born between January and April 1993. As GWS wouldn't compete in the Australian Football League (AFL) until 2012, he moved to Melbourne in 2011 to complete year twelve at Caulfield Grammar School as a boarder.
Bugg made his AFL debut in Greater Western Sydney's first ever match — which was in the opening round of the 2012 season against Sydney at ANZ Stadium — where he recorded twenty-seven disposals, five marks and four tackles. In his fifth match, he received the round five nomination for the Rising Star after the forty-two point loss against the Western Bulldogs at Manuka Oval where he recorded twenty-eight disposals, seven marks, and six rebound-50s; playing as both a defender and midfielder in the match, he was rewarded for his ability to man-up on Shaun Higgins, Justin Sherman and Nathan Djerrkura. In June, he signed a contract extension until the end of the 2015 season. The season saw him involved in numerous match review panel incidents, where the Western Bulldogs', Patrick Veszpremi missed a match for headbutting Bugg, and Essendon's, David Zaharakis was reprimanded for striking Bugg, along with match-day incidents by Essendon's, Heath Hocking (headbutting) and Richmond's, Bachar Houli (forceful front-on contact), which did not result in charges, and he was fined for being involved in a melee in the round thirteen match against Melbourne. He played eighteen matches and kicked six goals in his debut season.
Bugg played the opening six matches for the 2013 season before being omitted for the round seven match against Adelaide at Škoda Stadium, he was recalled the next week for the eighty-three point loss against Hawthorn at Aurora Stadium before being dropped again the next week. He played the next two months in the reserves for the UWS Giants in the North East Australian Football League (NEAFL), before returning to the senior side for the 129-point loss against Sydney at the Sydney Cricket Ground in round sixteen and played the remainder of the season, apart from the final round match against Gold Coast at Metricon Stadium. He was praised during the year by former Melbourne captain, Garry Lyon, who noted Bugg "shows leadership quality beyond his years".
After a strong pre-season in 2014 where he won the club three-kilometre time trial, Bugg played the first six matches of the season before he was omitted for the round seven match against Port Adelaide at Manuka Oval. He returned to the senior side for the forty-five point win against Brisbane at the Gabba in round thirteen where he was a late replacement for Aidan Corr. During the match, he was involved in a marking contest where his hip collided with Jonathan Brown's head, which subsequently forced Brown into retirement after receiving too many head knocks. After receiving the reputation of being "one of the best nigglers in the competition", he was involved an incident in round fifteen where he bumbed Sydney captain, Kieren Jack, which drew condemnation from the public, in particular from Australian Football Hall of Fame member, Tony Shaw who described the bump as "pretty ordinary". He was involved in further incidents, which saw both St Kilda's, Maverick Weller and Fremantle's, Hayden Ballantyne suspended for striking him, and North Melbourne's, Sam Gibson suspended for rough conduct.
The opening round of the 2015 season saw Bugg play his 50th AFL match in which the club defeated St Kilda by nine points at Etihad Stadium. During the match, he collided with St Kilda captain, Nick Riewoldt, which saw Riewoldt sent to hospital for precautionary scans, the collision drew the ire of St Kilda coach, Alan Richardson who labelled it "poor", with the public and media pondering whether the act was deliberate. He was ultimately cleared by the match review panel where they deemed "Riewoldt stepped into Bugg's path and he was unable to avoid contact" and he later confirmed that the collision was unintentional. He played the first twelve matches for the season before he was omitted for the first match after the mid-season bye, the round fourteen clash against Richmond at the Melbourne Cricket Ground. He returned to the senior side for the twenty-one point loss against Port Adelaide at Adelaide Oval in round twenty and played the remainder of the season. In August, it was revealed that GWS were yet to offer him a contract and speculation grew that he would return to his home state of Victoria after several clubs expressed interest in him. After an up and down season and sixty-five matches for GWS in total, he was traded to the Melbourne Football Club in October.
After playing every match in the 2016 NAB Challenge and being named as one of the "eye-catching" players during the pre-season by AFL Media, Bugg made his debut for Melbourne in the opening round of the season against his old side, Greater Western Sydney at the Melbourne Cricket Ground in a two-point win. He drew negative attention during the thirty-three point win against Richmond at the Melbourne Cricket Ground in the annual Anzac Day eve match for two separate incidents, the first where he pushed Jack Riewoldt when he was injured and Bugg received a $1000 fine from the match review panel for "making contact with an injured player". The second incident was his celebration after kicking his only goal for the match, where he put his finger to his mouth to silence the Richmond cheer squad with a wink, which drew displeasure from the commentators. He later apologised for both incidents. He played every match for the season until the round sixteen match against Fremantle at TIO Stadium, and played in the Victorian Football League (VFL) for Melbourne's affiliate team, the Casey Scorpions, before returning to the senior side for the twenty-nine point win against Hawthorn at the Melbourne Cricket Ground in round twenty and played the remainder of the season in the seniors. He played eighteen matches in his first season for Melbourne and finished seventeenth in the best and fairest count.Statistics are correct to the end of the 2017 season