Match ends, Borussia Dortmund 0, Arsenal 1.
Aaron Ramsey's header gave Arsenal a battling victory over Borussia Dortmund to keep Arsene Wenger's side top of Champions League Group F.
Wojciech Szczesny denied Marco Reus and Jakub Blaszczykowski as Arsenal looked to contain Dortmund in the first hour.
The Gunners scored with their first effort at goal when Ramsey forced home Mesut Ozil's cross after 62 minutes.
Ramsey almost made it 2-0 moments later and an increasingly desperate Dortmund side could not deny them a famous win.
Arsenal became the first English team to triumph at Dortmund's imposing Westfalenstadion home with their 14th win in 15 unbeaten away games.
That run started in March with a victory at Bayern Munich - the eventual European champions - and this result against the team Bayern beat in last season's final was just as impressive.
Ramsey's goal secured the points, but the win came on the back of a measured performance that saw Arsenal keep Dortmund at arm's length for long periods and score with a classic counter-attack.
The Gunners concentrated on keeping possession in the first half but their conservative approach meant they had just one corner to show for it.
At the other end, Dortmund were producing some typically inventive approach play but struggled to find a way through the visitors' defence, and were unable to find a finish when they did.
Neven Subotic hooked a volley wide after Ramsey inadvertently headed a Reus free-kick back into the danger zone, and Blaszczykowski was also off target when he met Kevin Grosskreutz's cross.
The home side's best chance before the break fell to Henrikh Mkhitaryan, who was teed up by Blaszczykowski but fired wide after trying to pick his spot from the edge of the area.
Trying to keep a team with as much attacking flair as Dortmund quiet appeared a risky tactic, especially when the home side upped the tempo early in the second half.
A Reus header zipped up off the slick surface and forced Szczesny into his first save of the night, quickly followed by his second from a Blaszczykowski snap-shot following a quick break. Reus buried the follow-up but the flag was already up for offside.
Just as the Dortmund pressure was building, however, Arsenal struck with their first meaningful attack.
Olivier Giroud caused havoc in the area from Ozil's cross and Ramsey darted in to beat Neven Subotic to the dropping ball, stooping to head past Roman Weidenfeller.
What had been a cagey game suddenly became wide open and moments later another Arsenal counter-attack almost saw them extend their lead. Ramsey was again on the end of it but this time his shot was pushed away by Weidenfeller.
Dortmund threatened an immediate response when Reus failed to convert Lewandowski's cross but there was more happening at the other end, with Nuri Sahin clearing off the line and Per Mertesacker almost getting his head to an inviting delivery.
In the end one goal was enough. Dortmund had failed to score only once in their last 60 home games and had won their last eight home ties in the Champions League, but their search for an equaliser constantly ran into dead ends and Szczesny did not have another serious save to make before the end.
The win gave Arsenal much-needed revenge for their defeat at home to Dortmund a fortnight ago, but their passage through to the last 16 is still far from straightforward.
Even if the Gunners beat bottom side Marseille at the Emirates on 26 November, they could still need to pick up a point at Napoli in their final group game in order to secure their progress.
- 6BenderSubstituted forHofmannat 75'minutes
- 16BlaszczykowskiSubstituted forAubameyangat 74'minutes
- 9LewandowskiBooked at 41mins
- 11ReusSubstituted forSchieberat 86'minutes
- 8ArtetaBooked at 23mins
- 7RosickySubstituted forVermaelenat 90+1'minutes
- 12GiroudSubstituted forBendtnerat 90'minutes
- 19CazorlaSubstituted forMonrealat 75'minutes
- Bjorn Kuipers
- Shots on Target
Second Half ends, Borussia Dortmund 0, Arsenal 1.
Attempt saved. Robert Lewandowski (Borussia Dortmund) right footed shot from the centre of the box is saved in the bottom right corner. Assisted by Kevin Großkreutz with a cross.
Offside, Arsenal. Nicklas Bendtner tries a through ball, but Mesut Özil is caught offside.
Mesut Özil (Arsenal) wins a free kick on the right wing.
Foul by Marcel Schmelzer (Borussia Dortmund).
Substitution, Arsenal. Thomas Vermaelen replaces Tomas Rosicky.
Substitution, Arsenal. Nicklas Bendtner replaces Olivier Giroud.
Attempt missed. Robert Lewandowski (Borussia Dortmund) header from very close range is too high. Assisted by Kevin Großkreutz with a cross following a corner.
Corner, Borussia Dortmund. Conceded by Kieran Gibbs.
Substitution, Borussia Dortmund. Julian Schieber replaces Marco Reus.
Mesut Özil (Arsenal) wins a free kick in the defensive half.
Foul by Nuri Sahin (Borussia Dortmund).
Attempt blocked. Marco Reus (Borussia Dortmund) right footed shot from the right side of the box is blocked. Assisted by Nuri Sahin.
Delay over. They are ready to continue.
Delay in match Laurent Koscielny (Arsenal) because of an injury.
Attempt missed. Laurent Koscielny (Arsenal) header from the centre of the box misses to the left. Assisted by Mesut Özil with a cross following a set piece situation.
Aaron Ramsey (Arsenal) wins a free kick in the attacking half.
Foul by Nuri Sahin (Borussia Dortmund).
Substitution, Arsenal. Nacho Monreal replaces Santiago Cazorla.