Barcelona goalkeeper Marc-André ter Stegen saved a second-half penalty as the Spanish giant began its Champions League campaign by drawing 0-0 at Borussia Dortmund on Tuesday.

Lionel Messi came on as a substitute for the last 30 minutes for his first appearance of the season but was unable to spark the visitors' struggling attack, with Dortmund creating the best chances of the game.

Ter Stegen 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.

Dortmund's Mats Hummels, center, heads the ball wide during the Champions League Group F soccer match between Borussia Dortmund and FC Barcelona in Dortmund, Germany, Tuesday, Sept. 17, 2019. (AP PhotoMichael Probst)

Dortmund's Mats Hummels, center, heads the ball wide during the Champions League Group F soccer match between Borussia Dortmund and FC Barcelona in Dortmund, Germany, Tuesday, Sept. 17, 2019. (AP PhotoMichael Probst)

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.

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.

Slavia Prague held Inter Milan 1-1 after conceding a late equalizer in the other Group F game in Italy.

Barcelona's Lionel Messi smiles at the end of the Champions League Group F soccer match between Borussia Dortmund and FC Barcelona in Dortmund, Germany, Tuesday, Sept. 17, 2019. (AP PhotoMichael Probst)

Barcelona's Lionel Messi smiles at the end of the Champions League Group F soccer match between Borussia Dortmund and FC Barcelona in Dortmund, Germany, Tuesday, Sept. 17, 2019. (AP PhotoMichael Probst)

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 and the home fans cheered loudly when he was crowded off the ball by three defenders as the Argentine failed to make an impact.

More AP soccer: https://apnews.com/apf-Soccer and https://twitter.com/AP_Sports

Ciarán Fahey on Twitter: https://twitter.com/cfaheyAP