Schalke 04's McKennie, who was playing in his first Revierderby, picked up a yellow card in the third minute and was gone by the 33rd minute, part of a double substitution with the Royal Blues already trailing, 4-0.
McKennie's foul was rather innocuous and hardly as bad as a half dozen other rash fouls committed by others, but it came seconds after referee Deniz Aytekin had issued an early verbal warning to McKennie's Austrian teammate, Guido Burgstaller, so it was totally deserving of a card.
McKennie wasn't the worst Royal Blue on the field, but his nerves were evident, making his substitution for German international Leon Goretzka inevitable.
Pulisic, a veteran of three Revierderby games before his 19th birthday, was playing in his 50th Bundesliga game for Borussia Dortmund, setting a record for the youngest foreigner to reach that mark, and didn't have a bad game.
His cross led to the first goal by Pierre-Emerick Aubameyang in the 12th minute, and he did an effective job as the lone striker after Aubameyang was sent off in the 72nd minute.
There was one small problem: Borussia Dortmund didn't win. Schalke 04 rallied for four goals in the last 29 minutes and escaped Signal Iduna Park with a 4-4 tie.
"We stopped playing soccer," Dortmund coach Peter Bosz said of stunning collapse. "When you look at the goals we conceded, it was way too easy."
The talk before the game was that Bosz would lose his job if Dortmund lost. Afterwards, one wondered how he could ever keep his job after the tie.
And Pulisic will have to wonder what it will take for him to get a win. Before he left to join the USA for the final two games of the Hexagonal, Dortmund was unbeaten in the Bundesliga with six wins and a tie and a five-point lead at the top.
Since he returned to Germany after the 2-1 loss to Trinidad & Tobago in Couva that knocked the USA out of the World Cup, he has played seven games for Dortmund in the Bundesliga and Champions League and has not won one of them.