Sebastien Haller and Gio Reyna came off the bench to combine for a late winner as Borussia Dortmund took all three points from a 2-1 triumph in Mainz.