Manchester City's Angus Gunn makes a save during the penalty shootout
Image credit: Reuters
The Germans, who have played five pre-season friendlies already, looked sharper in the first half than a City side who struggled to adapt to playing three at the back.
Both teams made a string of changes at the break and Guardiola's men adapted better. And it was two substitutes involved in the opening goal with David Silva setting up Aguero for a tap in.
Shinji Kagawa had a strong appeal for a penalty turned down after being tripped in the box late on before USA international Pulisic levelled to force the shootout.
How did City adapt to Guardiola's tactics? The Spanish coach's preference for having a sweeper-keeper and defenders who look to play short passes saw City give the ball away a lot in the first half. But as the game wore on they improved and were the better side in the second half. You can see where John Stones would fit in this team if he moves from Everton.
Manchester City manager Pep Guardiola
Image credit: Reuters
MAN OF THE MATCH
Ousmane Dembele (Dortmund): The Frenchman showed glimpses of his immense talent with his pace and was a handful particularly in the second half. The summer signing was not on the level he was against Manchester United last week but showed moments of quality that will have defenders in the Bundesliga quaking in their boots.
9' - MOR EFFORT! More sloppiness from the City defence. Pep appears to favour the short pass out from the keeper but they give it away and Mor curls a shot wide from the edge of the area, should have done better.
10' - FIRST CHANCE FOR CITY! Navas runs on to a long ball and sends in a low ball first time, which falls to Delph who slices his shot wide.
45' - GOOD SAVE! A neat City move ends in Iheanacho's side-footed effort from close range blocked by the keeper.
62' - CHANCE FOR BONY! The striker turns his marker and fires in a shot from just inside the area that the keeper parries.
67' - BONY SHOT! The forward collects the ball with his back to goal and shoots on the turn which goes over the bar from around 20 yards, decent effort.
75' - WHAT A MISS! Castro gets on the end of a nice reverse ball, he is through on goal, takes a clumsy touch and pokes his effort over from close range.
79' - GOAL! Dortmund 0-1 Manchester City: Aguero with a tap in after a nice first-time low cross from Silva, a slick move from City.
90'+2 - PENALTY APPEAL! Kagawa is tripped by Fernandinho after he weaved his way into the box, that looked like a certain spotkick.
90'+6 - GOAL! Dortmund 1-1 Manchester City: Dortmund play a corner short, the ball is laid off to Pulisic who side-foots his effort into the net via a deflection with the last kick of the game.