The Spain striker originally arrived on loan from Barcelona in the summer, and Dortmund have now decided to buy the 25-year-old for a reported fee of 23 million euros (£20.3million).
Alcacer has scored nine goals in eight competitive matches for the German club so far this season.
Speaking to the club website, he said: "I am very happy in Dortmund, at BVB and in this wonderful team.
"Joining Borussia Dortmund was and is the right decision for me.
"I will do everything I can to say thank you for showing trust in me."
Dortmund sporting director Michael Zorc said: "Paco is wholeheartedly with us, he has quickly integrated and has become an integral part of our squad.
"We look forward to many more goals and assists from Paco in the coming years."