Eredivisie Wrap: Vitesse go top, AZ end slump in style
Christian Atsu put the visitors ahead as early as the third minute, but seven minutes later Zwolle were level through Guyon Fernandez.
It looked as though both sides would have to settle for a share of the points until Patrick van Aanholt claimed a last-minute winner to send his team to the summit as Zwolle's wretched run of form in the league continues, their last win coming on October 20, nine games ago.
Peter Bosz's side are now three points clear of Twente, who beat Heracles on Friday night, and Ajax, who host PSV on Sunday.
Fifth-placed Heerenveen were held 2-2 at home by struggling Roda JC.
Hakim Ziyech put the home side in front after 12 minutes, only to see Krisztian Nemeth level matters on the half hour.
Alfred Finnbogason gave the hosts the lead for a second time from the penalty spot midway through the second half, but Guus Hupperts equalised in the 71st minute to deny Heerenveen a third successive league win.
AZ ended a run of four successive defeats in the league with a comfortable 3-0 home success over NAC Breda.
Steven Berghuis scored twice, in the 23rd and 69th minutes, either side of Aron Johannsson's goal in first-half stoppage time and Breda have now won just once in their past six league outings.
Elsewhere, RKC Waalwijk and Groningen drew 1-1, Michael de Leeuw's opener for Groningen cancelled out by Evander Sno's penalty eight minutes from time.