Schalke remain third in the Bundesliga with a 2-1 away victory over Borussia Dortmund in the Revierderby.
The first chance of the game fell to the German champions in the sixth minute, when Marco Reus's free kick across the face of the goal went to Sebastian Kehl, but the midfielder failed to take his chance.
That miss came to haunt Dortmund eight minutes later when Ibrahim Afellay volleyed home off the post to give Schalke the lead.
Jurgen Klopp's side failed to produce any immediate response and struggled to force Schalke goalkeeper Lars Unnerstall into making any good save.
It could have become 2-0 to the Royal Blues in the 28th minute when Jefferson Farfan swung a cross from the right that Klaas-Jan Huntelaar headed over the Dortmund crossbar.
Reus created the best chance of the first half for BVB at Signal-Iduna-Park on 37 minutes, when he shot at goal, but Unnerstall made a comfortable save. Minutes later Robert Lewandowski spurned his chance.
Schalke doubled their advantage just three minutes into the second half when Lewis Holtby played a brilliant ball to Marco Hoger, who advanced to the edge of the penalty area and shot home.
Lewandowski, though, halved the deficit on 55 minutes, as he flicked Reus's free kick into the visitors' goal to bring Dortmund back into the game.
Klopp's team showed more swagger and enthusiasm thereafter, but failed to get the better of Schalke defenders Benedikt Howedes and Joel Matip.
Afellay came close to making it 3-1 to Schalke on 71 minutes when he made a fierce attempt on the Dortmund goal, but was denied by Roman Weidenfeller.
The defeat leaves Dortmund 12 points behind leaders Bayern Munich.