Adams, 21, opened his German league account with a tap-in, pouncing on the rebound after Marcel Sabitzer hit the bar to put Leipzig ahead early on.
A rare fumble from goalkeeper Peter Gulacsi allowed Moussa Niakhate to equalise for Mainz, but Marcel Halstenberg quickly restored the lead.
Niakhate equalised for a second time shortly before half-time, before Leandro Barreiro turned in a Danny Da Costa cross just after the break to hand second-from-bottom Mainz only its second win this term.
"It's a blow, that's for sure, the title isn't really in our heads at the moment," Leipzig captain Willi Orban said after his side missed the chance to move within a point of league leader Bayern Munich.
Bayern, which plays Schalke on Monday (AEDT), can now pull seven points clear at the top after third-placed Bayer Leverkusen also dropped points with a 1-0 defeat to Wolfsburg.