Jefferson Farfan fired Schalke to victory in the Ruhr derby at Borussia Dortmund as Felix Magath's Royal Blues moved up to third.
The Peruvian forward struck in the 31st minute with Schalke's first chance of the game after Dortmund had made a bright start.
And that goal proved to be enough to earn the visitors all three points and leave Dortmund languishing near the foot of the table.
The 134th Ruhr derby attracted over 80,000 fans to the Westfalen Stadion, ! but the majority would have left disappointed.
Dortmund fell to their third defeat of the season and extended their run of games without a win to six against their local rivals.
But it did not look like it would end that way in the first half an hour as Dortmund dominated possession and ought to have found themselves ahead in the 26th minute.
Lucas Barrios' powerful shot from 25 yards out struck the underside of the crossbar and appeared to bounce down behind the line before Manuel Neuer was able to recover the ball, but referee Wolfgang Stark waved play on.
Schalke remained under pressure until a quick break and their first chance of the game led to the winning goal.
Levan Kenia began the attack before feeding Halil Altintop on the left.
The Turkish forward cut in to find Farfan, who used his strength to reach the ball and then place it past Roman Weidenfeller after 31 minutes.
Schalke were buoyed by their shock lead and Raf! inha almost made it two minutes later, but Weidenfeller made a! n excell ent save to deny him.
Dortmund did have the ball in the back of the net early in the second half, but Tamas Hajnal's goal was rightly ruled out for an offside decision against Tinga in the build-up to the goal.
Schalke then had the chance to put the game beyond their hosts in the 70th minute, but Gerald Asamoah blasted his shot over the crossbar after Vicente Sanchez's shot was only parried by Weidenfeller.
The home side threw men forward as they searched for a late equaliser, but Schalke held firm to take all three points and local bragging rights, as well as to move up to third in the table.