Nigeria teenager Kelechi Iheanacho started up front for the Citizens, with Jesus Navas and new signing Oleksandr Zinchenko supporting him on the wings as the Spaniard oversaw his second friendly four weeks into pre-season.
Iheanacho looked lively in the early stages of the game and nearly scored two minutes in after being teed up by Gael Clichy, and looked very promising as the match progressed, keeping the Dortmund defence on the backfoot.
However, the game only really sprang into life in the last 10 minutes of the match as second-half substitute Sergio Aguero's got the first goal under Pep's reign against the run of play.
Aleix Garcia started the move, slotting a through ball to Silva, who tucked the ball under goalkeeper Roman Bürki and into the path of Agüero, who had the simple task of slotting into an empty net.
The goal sparked the game into life and with literally the last kick of the game with a late corner and City's defence sleeping, American teenager Christian Pulisic, fired it low, through a crowd of players, and between City keeper Angus Gunn's legs.
With the match going to a penalty shoot-out; Tosin Adarabioyo, Fernandinho, Silva, Aguero, Nolito and youngster Angelino all scored for City, while Raheem Sterling missed his spot-kick.
However, the England international's miss did not prove to be costly as youngster Gunn made two saves to secure a 6-5 penalty win.