Bundesliga Wrap: Bayer slip up, Cologne held
Leverkusen had the chance to return to the top of the league on Sunday with a win after Bayern were held to a goalless draw by Hamburg and Jurgen Klopp's Dortmund were defeated by his former club Mainz on Saturday.
But Giulio Donati's sending off after just seven minutes forced Roger Schmidt's side to play at a man disadvantage for much of the match.
That clumsy challenge also afforded Ricardo Rodriguez the opportunity to put the hosts in front from the spot, which he duly accepted, adding to the goal he scored in Thursday's 4-1 UEFA Europa League loss to Everton, when he also netted at the wrong end.
Josip Drmic pulled Leverkusen level in the 29th minute to cap a fine breakaway move. But Vieirinha's headed goal, following strong work down the left-hand side from Sebastian Jung, re-established the lead in the final moments of the first half.
Schmidt shuffled his pack with a double substitution at half-time but eventually the extra man told as Rodriguez was left alone on the edge of the box at a 63rd-minute corner and took full advantage, crashing in a terrific left-foot volley.
Substitute Aaron Hunt then profited from more lazy Leverkusen defending late on to add a fourth and ensure the slips of last season's top two escaped greater penalty.
The Bundesliga's other game on Sunday saw Rhineland rivals Borussia Monchengladbach and Cologne clash for the first time since April 2012.
Cologne's relegation meant these fierce rivals, and their fans, had been denied what is considered one of German football's biggest derbies for more than two years.
But the action on the pitch failed to match the excitement among the fans as the teams played out a 0-0 draw to remain next to each other in mid-table, each with six points from four matches.