Schmelzer was born in Magdeburg, Saxony-Anhalt. He started his professional career with Borussia Dortmund, making his first appearance on 9 August 2008, in the German Cup first-round match against Rot-Weiss Essen.[4] His first league appearance came in the following week, as he played the final twenty minutes of a 3–2 win at Bayer Leverkusen. Schmelzer had his best season for Borussia Dortmund in the 2010–11 season, where he managed to play every minute of the season for the team who went on to win the Bundesliga that year.
The following season, Schmelzer, who missed the beginning of the Bundesliga due to injury, enjoyed yet another trophy as he helped Dortmund win another Bundesliga title.[5] In addition to being the left back for the team for the entire season, Schmelzer also helped Dortmund secure the DFB-Pokal with a 5–2 win against Bayern Munich, making it three titles in two years.
On 11 January 2013, Schmelzer extended his contract with Borussia, which will keep him at the club until 2017.[6]
On 27 July 2013, Schmelzer won the 2013 DFL-Supercup with Dortmund 4–2 against rivals Bayern Munich.[7]
On 25 April 2016, Marcel Schmelzer yet again extended his contract with BVB. He agreed on a five-year deal which will keep him with the black and yellows through 2021.[8]
After the departure of Mats Hummels, Schmelzer was named a candidate to be the new captain. On 14 August 2016, Schmelzer captained his first match against league champions Bayern Munich during the 2–0 defeat of the DFL-Supercup.[9]
On 31 May 2020, he scored his first Bundesliga goal in seven years in a 6–1 win against Paderborn, coming off the bench for Moroccan right-back Achraf Hakimi. Later that day, fans voted him as Man of the Match on the club's official Instagram account.[10] Despite missing virtually the entire 2020–21 season and Dortmund's DFB-Pokal triumph, Schmelzer extended his contract with Dortmund in summer 2021 for another year, although this was primarily to cover medical insurance regarding a long-term knee injury rather than concerning game time.
He retired after 17 seasons as a Borussia Dortmund player and was celebrated after their game against Hertha BSC. Overall he played 258 German top-flight matches.[11]