
Dortmund dominated in a strong start, hitting the woodwork through Jamie Bynoe-Gittens and missing a string of golden chances with Mainz defending desperately.
They took the lead with a curled Julian Brandt freekick in the 29th minute and almost added another seconds later as a Marcel Sabitzer shot bounced off the crossbar.
Their wastefulness was punished two minutes before the break when Mainz scored with their first chance of the game as Sepp van den Berg’s header from close range crossed the line.
Gio Reyna thought he had snatched a 90th-minute winner for the hosts but his effort was ruled offside, leaving Dortmund, with just one win from their last eight league games, in fifth place on 27 points.
The Ruhr valley club, runners-up last season, are already 12 points off the top and four points off fourth-placed VfB Stuttgart, occupying the last Champions League spot, who are in action on Wednesday.
The league stops after Wednesday’s matches for a winter break and will resume on Jan 12.