Olympique de Marseille's defeat to Fenerbahce in the parallel Group C encounter guarantees Lucien Favre's men second place behind the Turkish outfit.
The evenly-balanced first 45 minutes produced a number of chances on either side, before Mönchengladbach dominated the exchanges after the break. Substitute Igor de Camargo's late brace decided the outcome, when the visitors were down to ten men following Luciano Bebe's sending off.
Limassol come on strong
Limassol, bottom of the group with only a single point from the teams' previous encounter, started confidently and had Bebe through on goal only seconds after the kick-off, with the Foals lucky that the Brazilian miscontrolled the ball. Guest captain Marios Nicalaou and Rui Miguel both missed the target soon after, before Mönchengladbach started finding their way into the game as Juan Arango saw his powerful volley bounce off Marco Airosa and Mike Hanke shot past the right-hand post.
The latter then forced Matias Degra into action, while at the other end of the pitch Marc-Andre ter Stegen looked surprisingly shaky on a few occasions, one of which almost enabled Orlando Sa to nod in after half an hour.
Borussia's midfield maestro Arango then twice failed to find the net from free kicks before Degra produced a brilliant save, Alexander Ring's volley a minute before the interval being the first half's most promising opportunity.
Borussia improved after the interval
Mönchengladbach emerged for the restart in positive shape, trying to up the pressure as Patrick Herrmann and Arango tried their luck. A minute later, Havard Nordtveit sent Herrmann deep, but the pacy Germany Under-21 international, with only Degra to beat, could not get the better of Limassol's keeper. After that, Edmar could have caught the Foals cold, but his effort from the edge of the box barely troubled ter Stegen
The hosts seemed to lose the thread an hour into the fixture, but things eventually went their way inside the final 15 minutes after Bebe was red-carded for a professional foul on Herrmann. Mönchengladbach's probing paid dividends in the 79th minute as they upped the pressure and de Camargo, through on goal, coolly slotted home to make it 1-0. Arango and de Camargo had further opportunities, before the latter sealed the three points in stoppage time, beautifully heading Herrmann's cross into the far left corner.
Mönchengladbach: ter Stegen - Jantschke, Stranzl, Dominguez, Wendt - Nordtveit, Marx (72' Xhaka) - Ring (63' Mlapa), Arango - Hanke (74' de Camargo), Herrmann
Limassol: Degra - Airosa, Parpas (70' Dickson), Dosa Junior, Carlitos - Dede - Luciano Bebe, Nicolaou - Rui Miguel (84' Konstantinou), Orlando Sa, Edmar
Goals: 1-0 de Camargo (79'), 2-0 de Camargo (90'+1)
Red card: Bebe (75')