Leverkusen: Bayer Leverkusen struck twice in six second-half minutes to edge past visitors Cologne 3-2 and move within a point of second-placed Mainz 05.
Third-placed Leverkusen are on 29 points from 15 games with leaders Borussia Dortmund, on 37, in action later on Sunday against Nuremberg.
Dortmund are already assured of top spot for the winter break with two games left, after Mainz slumped to a 2-1 defeat at Eintracht Frankfurt on Saturday.
Leverkusen took a 21st minute lead through former Cologne striker Patrick Helmes who pounced on a bad clearance by keeper Faryd Mondragon to score from close range.
Cologne levelled six minutes later when Germany international Lukas Podolski curled a free kick into the box and Brazilian Geromel was left unmarked to volley in.
In a scrappy game played amid heavy snowfall and freezing temperatures, the hosts took control when Tranquillo Barnetta and Stefan Reinartz netted in a span of six minutes in the second half.
Cologne came back again, cutting the deficit through substitute Martin Lanig with his first touch of the ball in the 65th minute.
Lanig should have levelled 30 seconds later but instead fired over the bar from two metres out.
Defeat left Cologne on 12 points, one place off the bottom.