Andre Silva had scored twice for Frankfurt, who finished with 10 men, in the first half to cancel out Stindl's 14th-minute opener.
A Silva penalty in the 22nd minute launched a three-goal run in 10 minutes, with the Portuguese scoring again two minutes later after latching on to a deep cross from Aymen Barkok and thundering a shot past Yann Sommer.
Barkok then dribbled past the entire Gladbach defence to make it 3-1 in the 32nd.
Gladbach, who will take on Manchester City in the Champions League round of 16 in February, struggled to react even after Eintracht fell back in the second half, looking to hit the visitors on the counter-attack.
Gladbach, however, scored with a 90th-minute penalty by Stindl, with the hosts playing with 10 after the 82nd-minute dismissal of David Abraham for a second booking. Stindl then headed in a stoppage-time equaliser.
Gladbach are in seventh place on 18, with Frankfurt four points behind in ninth.