Henrikh Mkhitaryan opened the scoring for BVB before Olivier Giroud equalised, but the Polish striker had the final say with a late finish at the Emirates
Arsene Wenger, who celebrated his 64th birthday on Tuesday, saw his Arsenal side start slowly and the Premier League leaders were quickly punished when Henrikh Mkhitaryan shot past Wojciech Szczesny.
Olivier Giroud was on hand to draw Arsenal level shortly before the break, as he took his tally for the season to nine, before Robert Lewandowski grabbed the winner for last season's beaten finalists eight minutes from time.
The hosts brought former Dortmund midfielder Tomas Rosicky in for the injured Mathieu Flamini, while Ramsey regained his starting spot ahead of Santi Cazorla, having come off the bench to score his fifth Premier League goal of the season against Norwich City on Saturday.
Jurgen Klopp served the second and final game of his touchline ban after being sent to the stands against Napoli in September and he made three changes from Saturday's 1-0 win against Hannover.
Mats Hummels returned in defence along with Marcel Schmelzer, who made his first start for the club since September following a thigh injury.
Jakub Blaszczykowski was preferred ahead of Pierre-Emerick Aubameyang.
Assistant coach Zeljko Buvac took Klopp's place in the dugout and saw Dortmund enjoy more possession early on, but were unable to test Szczesny, with Kevin Grosskreutz and Hummels both firing well over in the opening six minutes.
Marco Reus powered an effort just past Szczesny's right-hand post before the Germany international dispossessed Ramsey well to allow Mkhitaryan a sight on goal after 16 minutes.
Robert Lewandowski then played the loose ball into the Armenia international, who fired low past a helpless Szczesny to put the visitors in front with his first Champions League goal for the club.
Arsenal's first attempt came six minutes later, with Laurent Koscielny heading a Mesut Ozil free kick over Roman Weidenfeller's bar before Jack Wilshere almost got on the end of a clipped Rosicky through-ball, only for it to get away from him and roll behind for a goal kick.
The home side continued to grow into the game and were almost rewarded when Rosicky's shot was blocked on the line by Neven Subotic, with Weidenfeller beaten, eight minutes from the break.
The Premier League leaders were level just three minutes late, however, courtesy of Giroud's close-range finish after a defensive mix-up from the visitors.
Bacary Sagna's delivery clipped Subotic, causing Weidenfeller to fumble, with Giroud on hand to level in emphatic fashion as he scored his second in as many Champions League matches.
Grosskreutz had the first chance of the second half for the visitors, but he saw his sidefooted effort saved easily by Szczesny before substitute Cazorla hit the angle of post and bar with a curled effort from outside the area.
Dortmund got the crucial goal after 82 minutes, courtesy of Lewandowski's 10th strike of the season.
The Poland international ghosted in at the far post to calmly stroke home Grosskreutz's delivery and ensure Dortmund ended Arsenal's 12-game unbeaten run in all competitions.