Erling Braut Haaland led the way for Dortmund alongside Jadon Sancho, Marco Reus and Julian Brandt with a chance to close-in on the front-runners.
This front-pairing resulted in the opening strike two minutes in when Haaland finished off a delightful pass from Reus, but it was disallowed for offside by the Video Assistant Referee (VAR).
Mainz were on the receiving end of an inviting opportunity a little later, but Jonathan Burkardt redirected a pass from Levin Oztunali wide of the right-corner.
Dortmund began to take charge thereafter with Brandt going close from the centre of the area before Reus shaved a ball from Emre Can wide while Haaland saw his attempt in the area parried.
A late surge from the visitors found Robin Quaison in a promising area but after pulling a cutback, had his attempt spurned as Manuel Akanji replaced the injured Dan-Axel Zagadou.
Dortmund trailed the visitors 12 minutes in the second half when a shot from outside the area by Oztunali crept into the top corner following a pass from Danny Latza.
A second beckoned later on as another well-played delivery from Latza found Alexander Hack, who headed against the top of the crossbar.
The Black and Yellow pulled level inside 73 minutes when Thomas Meunier stepped up for a penalty kick following a foul by Hack and executed perfectly.
Dortmund were given another chance from the spot three minutes later after Meunier created a foul in the area, but Reus fired well off target.
A spell of late chances came the home side's way, but Youssoufa Moukoko and Reus in particular wasn't able to profit thus it finished even-stevens.