Christian Pulisic came off the bench to score the winning goal as Borussia Dortmund got their Champions League campaign off to a winning start. But the lucky goal papers over the cracks of a poor Dortmund performance.
Club Brugge 0-1 Borussia Dortmund
In the end, Dortmund picked up three points against the lowest ranked team in their group — but it was a win they barely deserved and one only secured by a freak goal from Christian Pulisic on his 20th birthday.
Lucien Favre had named a team that, at least on paper, had looked strong enough to ease to victory against a Club Brugge side who went into this game without a win their last ten Champions League games.
Dortmund proved willing opponents to help Brugge end that run though, with Roman Bürki by far the busiest of the two keepers early on. The Swiss was called into action several times and dealt well with everything the Belgians threw at him, with Arnaut Groeneveld coming closest to making the breakthrough with a long-range drive.
Read more: Schalke battle to draw in gritty opener
An open first half gave way to a cagier second, but the hosts overran an ineffective Dortmund midfield and still crafted the best of the openings. Substitute Lois Openda, a highly-rated 18-year-old striker, came off the bench and could have scored a late goal for Brugge, but could only punt his shot straight at Bürki.
There was a feeling that Brugge were leaving themselves open to punishment by failing to take their chances, but the killer blow came in heartbreaking fashion.
Dortmund substitute Mahmoud Dahoud threaded a pass through the Brugge defense and Mats Rits, in his attempt to hoist the ball clear, saw it deflect off the shin of Pulisic and loop over the head of the helpless Karlo Letica in the Brugge goal.
It was a complete fluke and a devastating way for Brugge to lose. Meanwhile, Dortmund are up-and-running in the Champions League — but they need to get a lot better if they're to challenge Atletico Madrid and Monaco in Group A.
As it happened:
90' Peeeeeeep! FT Club Brugge 0-1 Borussia Dortmund.
88' Pulisic has been lively since coming on but that really was a huge slice of luck. Dortmund haven't played well enough to win tonight.
85' GOAL! Club Brugge 0-1 Dortmund — Dortmund lead through a complete fluke by Pulisic! Dahoud plays it through and Mats Rits tries to hoist it clear, but the ball ricochets off Pulisic and loops over Karlo Letica into the back of the net.
84' Dahoud is on for Weigl.
83' Huge chance for Brugge! Dortmund surrender possession in a dangerous area and Lois Openda, the 18-year-old, drives forward but his toe poke is straight at Bürki.
79' Chance for Piszczek at the far post, but the Pole can't wrap his foot around the ball enough and the ball hits the side-netting.
76' Groeneveld, whose shot forced the best save of the match so far from Bürki, is replaced.
73' Far fewer chances in the second half, as both sides want to avoid defeat in the opening game. But this really is a game that Dortmund need to win if they want to make it out of the group stage.
69' Pulisic on for Sancho. It hasn't been the English teenager's night tonight.
66' Dortmund running out of ideas now. When they get into attacking positions, they're met by a deep and determined Brugge back line. They need to be smarter than this.
63' Kagawa on for Götze, who has been disappointing again.
60' Dortmund still very much in this, but struggling to create anything — and the longer the game remains goalless the happier Brugge will be.
57' Dion Cools cones on for Brugge. Great name.
54' Wesley has been Brugge's most dangerous player tonight, and he drives forward on the break but checks his run and finds a teammate, but the move breaks down. If Brugge score, Dortmund can have no complaints.
50' Dortmund are keeping the ball much better at the start of the second period.
46' KICK OFF! The second half is underway.
45' Half time — Club Brugge 0-0 Dortmund
44' Chance just before the break for Dortmund as Akanji picks out Schmelzer at the far post, but the ball bounces right in front of him and his header is an awkward one and bounces wide.
42' Dortmund trying to get their boot on the ball as Favre barks instructions from his technical area.
38' Brugge may rue to miss these chances. They've created plenty of them, and you feel Dortmund will punish them if they can create something clear cut.
34' Brugge are first to every loose ball in midfield and Dortmund look a little flat at the moment. Weigl, Witsel and Götze need to do more.
30' Dortmund penalty? The ball bounces off Hans Vanaken's boot and on to his hand. Looked a clear penalty, but the referee was not interested.
27' Really good period of the game for Brugge, who are starting to call the shots. Dortmund just aren't doing enough in midfield to control the game.
24' Worrying times for Dortmund as Brugge piling forward and almost making the breakthrough. This time the ball trickles just wide of Bürki's post, but Brugge starting to dominate.
22' Bürki saves! Wesley cuts in from the left and lets fly, but Bürki makes a flying save to his left. You'd expect Bürki to make the save, but he pulls it off well.
19' Chance Brugge! Reus forced into some last-ditch defending as Brugge almost force the ball over the line.
15' Reus forces a corner with a deflected shot, but Witsel heads over from the corner.
Lucien Favre has named a strong Dortmund team on paper, but they have struggled to impose themselves in the first half.
11' Jelle Vossen goes close for Brugge with a header after a cross from the right. Dortmund opened up there.
7' Dortmund seeing plenty of the ball but Brugge look dangerous on the break. The early signs are that this game will have goals.
4' Witsel forced to block a shot on the edge of the box. An open start here.
2' Almost an early goal! A chance straight away for Dortmund as Matej Mitrovic sells Brugge keeper Karlo Letica short with a terrible back pass, allowing Reus in — but Letica does just enough to put Reus off.
1' KICK OFF! We're underway in Belgium.
20.55 The players are out and we're just about ready to go.
20.50 Dortmund are without a win in six away Champions League matches (D2 L4), since a 2-1 victory at Sporting in October 2016. But they have won on their last two visits to Belgium.
20.45 Dortmund have won only one of their last 11 UEFA Champions League fixtures (D3 L7), a 4-0 home success against Benfica in the 2016/17 round of 16 second leg. Dortmund fans have been starved of success in Europe in recent times.
20.35 Here's how Dortmund line up. Jadon Sancho, Mario Götze and Julian Weigl all start.
20.30 Good evening and welcome! The Champions League is back and Borussia Dortmund are looking to make a splash in the tournament having gone out in the group stage last season.