An 82nd-minute goal from Julian Draxler decided a tense affair at the Borussia Park Stadion which could have gone either way.
The win lifts the Royal Blues six points clear of fifth-placed Eintracht Frankfurt, who are in action against Fortuna Dusseldorf on Saturday, while Gladbach remain a point behind the top six but have played one game more than their rivals.
Not only was it a battle for places in Europe, it was also a battle between two local rivals and it was no surprise that it soon became a scrappy affair.
Chances were rare with Joel Matip almost putting through his own goal in the ninth minute when he turned a Juan Arango corner behind.
From the subsequent corner, Mike Hanke headed over the crossbar with the home team's first intended attempt on goal.
Arango was trying to carve out chances for his team-mates from corners and from open play, but Granit Xhaka sent the next shot over the crossbar while Schalke's answer was an effort from Michel Bastos which Marc Andre ter Stegen saved easily.
The visitors showed some signs of improvement early in the second half and Klaas Jan Huntelaar tested Ter Stegen again midway through.
Julian Draxler also made the Gladbach custodian work in the 73rd minute before leaving him no chance to put Schalke ahead in the 82nd minute after being put through on goal by Raffael.
Gladbach responded and laid siege to the Schalke goal as the Gelsenkirchen side retreated and defended their slender advantage.
The closest the Foals came to equalising was when Martin Stranzl turned the ball over the crossbar from Arango's free-kick, but Schalke held firm for the points.