Farfan fires Schalke up to third
Hamburg SV are top of the table following a 3-1 victory over VfB Stuttgart on Saturday, while Bayer Leverkusen held on for a 3-2 win against champions VfL Wolfsburg to remain second on goal difference with 13 points.
Schalke are on 10 points.
Bayern Munich moved up to fifth place on eight points following their 5-1 demolition of hosts Borussia Dortmund, a point behind fourth-placed Eintracht Frankfurt who beat Freiburg 2-0.
In Cologne, game plans for both teams quickly went out the window after only two minutes with Schalke's Farfan diving to meet a Gerald Asamoah header from a cross with a header of his own to hand Schalke a quick lead.
Cologne levelled only four minutes later through striker Lukas Podolski, who fired in his first goal of the season after a well-struck through ball from Fabrice Ehret.
Schalke again stunned the hosts with a goal only seconds after the re-start when Farfan turned provider, feeding the ball to Georgian Levan Kobiashvili to slot home.
Podolski, a fan favourite who returned to Cologne this season after three hapless years at Bayern Munich, almost equalised again three minutes later but his shot was blocked on the line.
He was desperately alone in search of an equaliser with every Cologne move starting and ending with him but Schalke defended in numbers to hold on for their win.
"I was nervous for the last half hour," said Schalke coach Felix Magath, who last season guided VfL Wolfsburg to the title. "But I am happy that we were able to weather this pressure. For the young team we have I think it was fine today."
Hosts Werder Bremen dropped to sixth place in the Bundesliga after they were held to a 0-0 draw by Hanover 96.
Hanover's Florian Fromlowitz, substituting for Germany goalkeeper Robert Enke who is suffering from an infection, singlehandedly denied the hosts on half a dozen occasions.
Bremen, better throughout, laid a second-half siege in the Hanover defence but Per Mertesacker had a point-blank header kicked off the line by American defender Steven Cherundolo.
Tim Borowski's long-range effort flew wide and Marko Marin's drive was blocked well by Fromlowitz. The 23-year-old keeper denied Claudio Pizarro's double strike in the 58th and then blocked the Peruvian's next effort minutes later.