Having hit the post earlier, Union's replacement forward Cedric Teuchert sprinted onto a pass which split Leverkusen's defence and fired home winning goal two minutes from time.
The 24-year-old made amends for squandering a golden chance six minutes after the break when his shot beat Lukas Hradecky, smashed the post and rolled agonisingly along the goalline and away to safety.
Having shocked Borussia Dortmund at the Alten Foersterei stadium four weeks ago, Union now sit just a point behind third-placed Leverkusen.
The victory could have come at a cost as Teuchert replaced Union's Dutch striker Sheraldo Becker, who was helped off after just 24 minutes with an ankle injury.
On Saturday, RB Leipzig can go top of the table if they beat Wolfsburg.
A Leipzig win would bridge the two-point gap behind embattled leaders Bayern Munich, who host Freiburg on Sunday.
Bayern are under pressure after last weekend's league defeat at Borussia Moenchengladbach and the midweek German Cup exit at second division Holstein Kiel.