Phillip Cocu's men were in control at Philips Stadion after an early double from frontman Gaston Pereiro (7 & 15).
However, Zwolle were given a way back into the match five minutes before the break when Hector Moreno conceded a penalty for handball, which Bram van Polen converted.
Before Cocu could get his side into the dressing room to regroup, the visitors had levelled things up when forward Lars Veldwijk (43) latched onto a long ball up field to beat goalkeeper Jeroen Zoet and stun the home support.
The Philips Stadion, though, eventually found its voice again as captain Luuk de Jong (75) headed in Maxim Lestienne's cross to send Eindhoven above Feyenoord and level with Ajax.
Australia defender Trent Sainsbury played a full game for Zwolle, picking up a yellow card in the process.
There was late drama at AFAS Stadion where a stoppage-time penalty from Jeffrey Gouweleeuw earned AZ a 2-2 draw against in-form Utrecht.
AZ, with fit-again former Aston Villa defender Ron Vlaar making his first start of the season, went ahead through Mattias Johansson (27).
After Robert Muhren had a goal ruled out for offside which would have made it 2-0, the visitors equalised through substitute Ruud Boymans (82).
Utrecht, who had won three successive league games, looked to have snatched all three points when Sebastien Haller turned the ball into the net with just five minutes left.
However, when Joris van Overeem was fouled in the penalty area, Gouweleeuw stepped up to coolly convert from 12 yards to earn a share of the spoils.
The day's late kick off saw Heracles Almelo beat Groningen 2-1 with a last-minute goal from defender Gino Bosz.
Bryan Linssen (39) had put the visitors ahead late in the first half, but that was quickly cancelled out through Paul Gladon (41).
Just when the match seemed set for a draw, Bosz netted a free-kick to secure victory and put Heracles fourth heading into the winter break.