The visitors looked on course to move to within a point of top spot when Wouter Weghorst gave them an 18th-minute lead.
But former Brisbane Roar loanee Stefan Nijland, only introduced in the 85th minute, fired home a low shot from the edge of the area to rescue a point for the hosts.
Trent Sainsbury started for Zwolle but was replaced at the break.
The draw left Heracles in third, level on points with second-placed Feyenoord, who play Ajax later this weekend.
FC Twente's worries deepened as they slumped to a 4-1 home defeat to Heerenveen.
Luciano Slagveer put the visitors in front after seven minutes and Kenny Otigba made it two four minutes before half-time.
Hakim Ziyech pulled one back in the 65th minute, but Joachim Andersen's 79th-minute own goal and Sam Larsson's effort in the 86th sealed a convincing win for Heerenveen.
Excelsior twice came from behind to win 3-2 at struggling Willem II.
Richairo Zivkovic gave the hosts a second-minute lead, only for Tom van Weert to level two minutes later.
Dries Wuytens restored Willem II's lead in the 20th minute, but Jeff Stans equalised with a penalty 10 minutes later and Daryl van Mieghem completed the turnaround in the 58th minute.
NEC Nijmegen beat bottom side De Graafschap 2-0 with goals in each half from Christian Santos, the first from the penalty spot.