The win was Leipzig’s first in four Bundesliga outings and moved them back up to third place in the table.
Mainz will be grateful the scoreline was not a repeat of their 8-0 defeat in the reverse fixture as Leipzig passed up several opportunities to score even more.
Werner put Leipzig ahead in the 22nd minute, turning in Konrad Laimer’s cross, before captain Yussuf Poulsen marked his 250th club appearance with the second goal.
A swift counter-attack had Leipzig forwards queuing up to apply the finish in the 36th minute, with Marcel Sabitzer the man to do it as he found the top corner.
And Werner added two more after the break, with the only surprise that there were not more, with Kevin Kampl seeing a goal ruled out for offside.
Mainz remain three points clear of the relegation play-off place, that cushion coming courtesy of a remarkable Cologne fightback in a 2-2 draw with Fortuna Dusseldorf which prevented the visitors from cutting the gap to a single point.