Regarded as one of the best young talents in world football, the 21-year-old joined the Bundesliga side from RB Salzburg midway through the 2019-20 season.
There has been widespread talk of a move to City in recent months and the Premier League leaders have now confirmed a deal to sign Haaland from Dortmund.
What has Manchester City said?
A City statement read: "Manchester City can confirm we have reached an agreement in principle with Borussia Dortmund for the transfer of striker Erling Haaland to the club on July 1 2022.
"The transfer remains subject to the club finalising terms with the player."
Dortmund posted an article on their website under the headline 'Erling Haaland close to move to Manchester City' but the link included did not work as thousands of fans went to read the news.
What is Erling Haaland’s transfer fee?
City will reportedly pay the Norway international's 60million euros (£51.25million) release clause.
Speculation linking City with Haaland had been gathering momentum in recent weeks, with reports on Monday claiming the player had already undergone a medical.
Dortmund signed Haaland from RB Salzburg on a deal worth €20 million (£17million) in 2020.
What is Erling Haaland's salary?
Haaland pockets around £132,000 per week currently, totalling around £6.8million per year, according to football website, Goal.
Reports had suggested that Haaland would earn around £500,000 per week in his move to City, but reports from Romano have put his salary at around £375,000 per week, which is a similar level to what current City player Kevin de Bruyne earns.
How many goals has Erling Haaland scored?
Haaland's early career in Norway showed promise but did not seem to indicate the sensation he would become.
He made his debut for second-tier Bryne as a 15-year-old and then scored 19 goals in 48 appearances for Molde, four of those coming in five Europa League games including a brace against Scottish side Hibernian.
He joined RB Salzburg midway through 2018-19, after the conclusion of Norway's summer season, and played only five times the rest of the way with his only goal - and start - coming against LASK on the final day.
From then on, though, his career took off in stunning fashion - to the extent that Salzburg were unable even to keep hold of him through the following season.
He fired 16 goals in 14 league games and eight in six in the Champions League, plus four in two domestic cup ties, before trading the Austrian Bundesliga for its more prestigious German namesake. Wolfsberger would be particularly happy to see the back of him after being on the receiving end of a pair of Haaland hat-tricks.
He scored another treble, his sixth of the season, within 23 minutes of coming on for his Dortmund debut against Augsburg and scored seven in his first three games, as well as continuing his Champions League form for his new club with a brace against Paris St Germain.
He finished with 44 for the season, from 40 appearances in all competitions across both clubs, and for an encore hit 41 in 41 last season.
While his four goals against Hertha Berlin marked his only hat-trick of that campaign, he scored twice in a game on a further 15 separate occasions including home and away against first Club Brugge and then Sevilla in the Champions League.
He has a further eight doubles this season plus hat-tricks against Bochum in the league and Wehen Wiesbaden in the DFB-Pokal in a total of 28 goals in 29 games, giving him 61 Bundesliga goals - second to Robert Lewandowski's 90 for Bayern Munich since his arrival. This season he ranks third, also behind Bayer Leverkusen's Patrik Schick.
He has 113 in 110 overall club appearances since first becoming a regular starter for Salzburg in 2019-20, with a further 15 in his 17 senior caps for Norway.