Kevin Danso put the hosts, also looking for a third straight win under new coach Martin Schmidt, ahead in the 12th minute but their lead lasted only three minutes with Kevin Volland firing in from 12 metres.
Kai Havertz turned the game around three minutes after the restart and Jonathan Tah added a third for the visitors on the hour from close range after Julian Brandt floated a free kick into the box.
Germany international Brandt sealed the win with an 88th- minute tap-in.
Image credit: Getty Images
Leverkusen are now on 51 points in sixth place with three matches left in the season. Eintracht Frankfurt, who host Hertha Berlin on Saturday, are fourth on 53.
The top four finishers advance to the Champions League group stage next season.
Bundesliga leaders Bayern Munich travel to Nuremberg on Sunday while second-placed Borussia Dortmund, a point behind on 69, host Schalke 04 in the Ruhr valley derby on Saturday.