United States star Reyna, who had an injury setback on Feb. 20 against Borussia Monchengladbach, came on as a 69th minute substitute and set up the Witsel goal after Jude Bellingham was fouled by Mainz.
Bayern are top on 60 points, with Dortmund in second place on 56. Bayer Leverkusen are in third place on 45.
"We are all very happy," Witsel said. "You cannot always play beautiful football. Sometimes you have to win that way as well and we did that today.
"We knew it would be very difficult in Mainz. It was especially hard in the first 25 minutes of the second half where we lacked possession."
Mainz had won their previous five home games in the league. Prior to Wednesday's game the hosts had let in just seven goals in their 12 home games this season.
But Witsel was left with too much space when Reyna floated a cross into the box and despite failing to connect properly with the ball, the midfielder volleyed in the winner.
Dortmund's Julian Brandt missed a chance to double their lead deep in stoppage time when he fired narrowly wide.