Groningen took the lead after five minutes as Michael de Leeuw met Jarchinio Antonia's cross to the near post, and his header was planted firmly past the Zwolle goalkeeper Kevin Begois before he had a chance to react.
De Leeuw had a chance to put his side into a commanding lead heading into half time but after he found some space in the box, the forward put his effort straight at the Zwolle goalkeeper.
In the second half, Zwolle pushed for a goal to get them back into the game but Bart van Hintum's long-range effort skimmed over the bar.
Sheraldo Becker had a chance 10 minutes later but the forward hit the side-netting as the home side began to invite pressure in the final third of the game.
Bram van Polen struck the bar with a header late on for Zwolle but Groningen held on to move into eighth in the Eredivisie table.