The Spanish striker, who joined Dortmund from Barcelona in the offseason, fired a shot to the top left corner in the 88th minute after a set up by substitute Jadon Sancho. Alcacer had earlier helped Dortmund reclaim the lead.

"Of course the result is disappointing," Frankfurt goalkeeper Kevin Trapp said. "We didn't allow much. Dortmund shot at goal three times and scored three goals."

It was Frankfurt's fourth defeat in five competitive games under new coach Adi Huetter.

A slice of luck helped Dortmund break the deadlock after a cagey opening from both sides. Jacob Bruun Larsen, the 19-year-old making his league debut, sent in a cross that Abdou Diallo headed at Trapp. Trapp made the save but Diallo managed to bundle over the rebound from close distance.

Sebastien Haller equalized with just over 20 minutes remaining, but Alcacer — who had entered the match a minute earlier — sent Sancho down the right side with a brilliant pass. The English winger eluded two defenders to set up Marius Wolf to score against his former club.

"We knew it would be a physically hard game, but we held up well against it," said Wolf, who joined Dortmund from Frankfurt in the offseason.

Dortmund's Mario Goetze remained on the bench for the third consecutive game. United States midfielder Christian Pulisic was not in the squad because of a muscle injury. He had already missed Dortmund's previous game and the U.S. friendlies against Brazil and Mexico.

Dortmund played with jerseys with a message against racism in place of the usual sponsor's logo.

___

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