Thomas Tuchel's side controlled the majority of the game at the Coface Arena, but had to wait until six minutes after the interval to break the deadlock through Yunus Malli.
Nicolai Muller produced a slide-rule throughball after a strong run from midfield and Malli finished coolly with his left foot.
Mainz continued to press after taking the lead and substitute Niki Zimling had a fierce long-range effort tipped over by Ron-Robert Zieler in the 84th minute.
Hannover then came close to an injury-time equaliser after some good work from Mame Biram Diouf, but the hosts broke quickly and another substitute, Maxim Choupo-Moting, sealed the three points by converting Zimling's low cross from the right.
Mainz have now won four of their last five Bundesliga games, while Hannover's second straight 2-0 loss leaves them 10th in the table.
Get the best features, fun and footballing frolics straight to your inbox every week.
Thank you for signing up to Four Four Two. You will receive a verification email shortly.
There was a problem. Please refresh the page and try again.