Meier gave Frankfurt the lead in the 39th minute and Pirmin Schwegler made it 2-0 for the hosts four minutes later.
Hoffenheim's woes continued after 70 minutes when substitute Sejad Salihovic was shown a second yellow card and he was joined down the tunnel three minutes later when Stephan Schrock was dismissed.
The nine men conceded via a Meier penalty after 83 minutes and Martin Laing completed a wonderful afternoon for Eintracht in the dying seconds.
Hoffenheim have only won once in their last 13 home matches and suffered their third straight loss at home for the first time in their Bundesliga history.
Hoffenheim started the better with Roberto Firmino running onto a Kevin Volland through ball and passing to Eren Derdiyok, who was unable to beat Frankfurt keeper Kevin Trapp after 13 minutes.
Firmino set up Volland eight minutes later but the latter could not overcome Trapp in a one-on-one situation.
Hoffenheim had the ball in the back of the net but Marvin Compper's headed effort was disallowed as he was ruled offside in the 34th minute.
Compper was part of a goal five minutes later but for Frankfurt as Meier's blast went off the Hoffenheim defender's foot and past his keeper Tim Wiese.
And Frankfurt made it 2-0 in the 43rd minute as Schwegler unleashed a blast from more than 30 yards over the head of Wiese, who was too far off his line.
Meier had a golden chance for a second goal after 61 minutes but his left foot shot went wide left from 12 yards out.
Hoffenheim went a man down for the final 20 minutes as Salihovic picked up two bookings within four minutes of his introduction.
The hosts lost another player three minutes later as Schrock was sent off after also collecting a second caution.
Meier struck his second from the spot in the 83rd minute, beating Wiese after Volland brought down Bastian Oczipka in the box.
Laing added his name to the scoresheet in the 90th minute, heading in Oczipka's cross from the left.