The Germany international has made 382 appearances and scored 161 goals since signing for Dortmund from Borussia Monchengladbach in the summer of 2012.
He is just 16 goals behind the club's record goalscorer Adi Preissler.
Reus' contract would have expired at the end of this season but he has agreed to terms that will take him past his 35th birthday.
With Dortmund holding a one point lead over Bayern Munich and only five games to go, Reus has the chance to win his first Bundesliga title with his boyhood club this season.
He said of signing a new deal: “As a team, we – just like all of our fans – have a big goal on our minds right now which our full focus is on: we want to become German champions; to do that, we’ll need every single Borusse. But beyond that, I still really want to do my best for the club I’ve spent over half my life with.
“There’s still nothing better for me than scoring goals in front of the best fans in the world in the most beautiful stadium in the world and celebrating victories together. That’s why I’m happy I’ve extended my contract for another year, because I’ve always said there’s no other club I’d prefer to play for over BVB in my career.”
Dortmund’s chief executive officer Hans-Joachim Watzke added: “Marco has had a lot of bad luck with injuries, but he’s a Borusse through and through and as the captain of our team, he pursues exactly the same goals we all do: he is and remains supremely ambitious to lead our BVB to its greatest objectives.”