It took until the 59th minute for the hosts to go ahead, and, although Klaas Jan Huntelaar would later miss a penalty, Jefferson Farfan's stoppage-time second secured them three points which take them joint second.
Huntelaar was denied from point-blank range after the half-hour mark, while both he and Kevin Prince Boateng would waste great chances in what was a one-way, but goalless first period in Gelsenkirchen.
Reported Arsenal target Julian Draxler was also guilty of missing the target from inside the penalty area, but Schalke would get the goal that their play deserved during a frantic 59th minute.
Schalke should have extended their advantage when Carlos Zambrano fouled Draxler in the penalty area, but Huntelaar saw his low spot kick well saved by Trapp, diving to his right.
Martin Lanig headed wide for the visitors from six yards on 83 minutes, but Schalke put the result beyond doubt in the final stages when Farfan found the bottom corner with a 25-yard free kick.
The result sees Schalke join second-placed Borussia Dortmund on 58 points.