The Mets had a winning record on the road this season, but their loss Thursday was their 46th at home -- most in the National League.
Juan Francisco and Jeff Bianchi both singled in a run in the Milwaukee second before Gennett drove in two more with a base hit to left.
Five Milwaukee pitchers protected the lead, although starter Johnny Helweg did not last long enough to get the win in his four-inning performance.
Alfredo Figaro (3-3) picked up the victory with two innings of shutout relief.
Daniel Murphy drove in a run for the Mets on a ground out in the third and New York still trailed by three before making things interesting in the ninth.
Josh Satin homered to lead off the inning against Jim Henderson and Justin Turner doubled with two outs. That brought up Lucas Duda as the potential tying run, but Duda struck out swinging and Henderson picked up his 27th save.
Dillon Gee (12-12) gave up four runs on seven hits in six innings to take the loss.