DORTMUND, Germany — The only thing missing for Borussia Dortmund was a goal.
The German team did everything but score as Barcelona barely held on for a 0-0 draw in their Champions League opening game on Tuesday.
The home side hit the crossbar, missed a penalty, wasted a host of chances and even kept Lionel Messi quiet on the Argentina star's first appearance of the season.
Messi came on as a substitute for the last 30 minutes but was unable to spark the visitors' struggling attack, with Dortmund creating the best chances of the game.
Instead Barcelona had goalkeeper Marc-André ter Stegen to thank for avoiding defeat as he saved a penalty from Dortmund captain Marco Reus in the 57th and denied the home side with a string of saves on his return to his native Germany.
"It was a very difficult game," ter Stegen said.
Dortmund substitute Julian Brandt struck the crossbar and Paco Alcácer also went close against his former side. It was the first game in which the Spanish striker failed to score this season.
"We had to suffer a lot, especially after the break when we lost control and they were very dangerous," said Barcelona coach Ernesto Valverde, who thanked ter Stegen for "his outstanding saves."
The 16-year-old Ansu Fati made his Champions League debut to become Barcelona's youngest player in a UEFA competition, before coming off for Messi in the 59th. Messi hadn't played since injuring his leg in pre-season.
Defender Mats Hummels showed why Dortmund brought him back from Bayern Munich with several vital interventions, starting with a block to deny Antoine Griezmann's first effort for Barcelona, then a crucial headed clearance from the lurking Luis Suárez. Griezmann, on his Champions League debut for Barcelona, produced the cross.
Dortmund's first big chance fell to Reus, who was denied for the first time by ter Stegen in the 25th. Jadon Sancho also missed a good opportunity.
A Barcelona corner caused chaos in the Dortmund defense, with Roman Bürki punching the ball clear and Fati's effort from the rebound deflected over by Reus.
Dortmund was more aggressive after the break but ultimately couldn't get past ter Stegen. Messi, meanwhile, looked far from his best.
"I'm going home with the feeling that we dropped two points. We would have put ourselves in a great position in this difficult group," Hummels said.
Dortmund next faces a trip to Slavia Prague on Oct. 2. The Czech champion held Inter Milan 1-1 after conceding a late equalizer in Italy.
"Then we'll see how strong we are," Hummels said.