Haaland bagged his 13th goal in all competitions for City as he came away smiling in the first reunion with his former side.
There was something inevitable about the 22-year-old, who scored 86 goals in 89 appearances for Dortmund, deciding the outcome.
City, who won their opening group game against Sevilla 4-0, top the standings on six points, three ahead of the Germans.
The first half was a very timid affair with only one attempt on target between the two sides.
However, the game came alive after 56 minutes when Bellingham nodded home into an empty net from a Marco Reus cross.
The hosts responded well and Haaland hit the outside of the post from a tight angle just before the hour mark.
City equalised after 80 minutes and scored with the first shot on target as Stones' long-range effort flew past Alexander Meyer.
Three minutes later, City were ahead when Joao Cancelo produced a stunning cross and Haaland's found the back of the net with an acrobatic finish.
"In the end we showed what we are. This is what we are and this is how we have to play. I'm proud of the last 20, 25 minutes," Haaland said.
"We scored two wonderful goals today -- mine was a bit better, honestly. It was a nice cross from Cancelo," he said.
Bellingham reflected on the predictability of the match-winner.
"Yeah I knew it [would be him] to be honest. Not many people know how to stop him. We did a really good job tonight and then he did what he does -- unfortunately for us," he said.