Paolo Guerrero scored his first away goal in the German top flight since October 2010, netting an 88th-minute winner to steal victory for the visitors at the RheinEnergieStadion.
In other fixture, Augsburg were held to a 0-0 home draw by fellow strugglers Nuremburg.