If Phil Foden performs so do Manchester City. This truism was reiterated by his two-goal show that helped sweep Pep Guardiola’s improving team to 10 points from four games at the stage’s halfway juncture.

Factor in Erling Haaland who decorated his captaincy for the evening with a 27th goal (for club and country) and Waldemar Anton’s 72nd-minute jab home was solely an irritation.

But after the strike Borussia Dortmund had more moments – Karim Adeyemi missed at point-blank range – and so despite Rayan Cherki’s fourth in added time, Guardiola is sure to remind his charges to disallow the opponent from wresting the initiative as the visitors did for the closing phases.

The bottom line, though: City are close to the cohesive proposition that makes them formidable. The ceiling is again high for the 2022-23 treble winners – just where Guardiola would want the side before Liverpool’s visit on Sunday.

Guardiola trained the squad on Wednesday morning, preferring to give players Tuesday off following Sunday’s “so demanding” 3-1 win over Bournemouth here. This rare move – “I’ve done it a few times” – caused the eye to look for any discernible impact on their rhythm seven or so hours after being put through the drills.

By half-time, the answer was a definite no. Dortmund initially monopolised the ball, pinned their hosts back and a loose Josko Gvardiol pass allowed Adeyemi to be played through along the right and momentarily threaten Gianluigi Donnarumma’s goal. Adeyemi was soon breaking again along the same flank and zipping in a ball from which Maximilian Beier failed to prosper.

Before this, a City foray had Foden crossing, the Dortmund goalkeeper Gregor Kobel repelling, and a throw-in being claimed. In this same sequence, Savinho fed Foden who powered a shot Kobel parried downwards, then the in-rushing Brazilian blazed high.

As against Bournemouth on Sunday, City were in breakaway rather than percussive passing mode. Savinho zipped over from his wing and caused Daniel Svensson to scythe him down but Foden’s free-kick pitter-pattered into Kobel’s gloves.

This proved a sighter for City’s playmaker. Because, on receiving his next opportunity, he scored – a goal that derived from classic Guardiola passing play. Camped in Dortmund territory, Nico González located Tijjani Reijnders in an inside-right zone. He pinged the ball to Foden and with a swish of his left foot Kobel was beaten with a calmly rolled finish.

Phil Foden fires Manchester City ahead. Photograph: Jason Cairnduff/Action Images/Reuters

A “floodgates open” moment because City soon added a second. Savinho’s run and shot was palmed away by the overworked Kobel before Jérémy Doku collected on the left and skimmed the ball back in, along the turf, and Haaland smashed home.

Pan left to a Guardiola whose joy was soon replaced by irritation due to the latest detail of imperfection from his unit. A mystery really because Kobel was soon tested again by a Reijnders hit, then Haaland marauded and offered up a rare treat: the sight of him turned winger, floating over a delivery from which Nico O’Reilly missed stabbing home City’s third.

Perhaps Guardiola’s ire was vented to prevent slackening off: if so he was horrified to witness his defence slumber with Adeyemi lurking under a high ball Donnarumma chose to punch out rather than catch.

Dortmund arrived as the third-placed side in the Bundesliga, seven points behind Bayern Munich, having been beaten only once in 14 games this term: a 2-1 defeat in Der Klassiker at the Allianz Arena three weeks ago. In four previous meetings with City (all Champions League) Dortmund had won only once – 1-0 in a December 2012 group game – and when the second half began they were far away from a repeat.

skip past newsletter promotion

Sign up to Football Daily

Kick off your evenings with the Guardian’s take on the world of football

Privacy Notice: Newsletters may contain information about charities, online ads, and content funded by outside parties. If you do not have an account, we will create a guest account for you on theguardian.com to send you this newsletter. You can complete full registration at any time. For more information about how we use your data see our Privacy Policy. We use Google reCaptcha to protect our website and the Google Privacy Policy and Terms of Service apply.

Savinho nearly killed all hope with a snapshot Kobel again had to repel. Then Gvardiol dropped the ball into Dortmund’s danger area and they cleared their ranks.

This time last year City struggled for consistency and solidity: keywords in the Guardiola manifesto. Here, as against Bournemouth and on more matchdays than not this term, each were present.

When González and O’Reilly played keep-ball at halfway, Niko Kovac’s side were a quasi-circular yellow wall. Seconds later and City, in their hypnotic fashion, had Savinho running by Dortmund’s six-yard box and forcing a corner: a diagram of how Guardiola’s side have dismantled so many foes.

Erling Haaland smashes the ball home for Manchester City’s second goal. Photograph: Nick Potts/PA

So, too, was Foden’s second goal. Doku tapped to González who tapped to Reijnders. The pass went to the Stockport Iniesta who swivelled and again beat Kobel from long range: sheer class.

City were in playful mood. A Doku pass was backheeled to Haaland who returned the ball and, when it came curving over, Savinho might have volleyed the sweetest of finishes but blasted over.

Beforehand, Guardiola delivered an update on Rodri: “It [his hamstring issue] doesn’t feel perfect – he will not be out for a while.” When the No 16 does return, City will be even better.