The prolific Norwegian, just 19 years old, took his tally to 11 goals in seven matches on his Champions League debut for the Bundesliga side.
Neymar missed PSG’s best chance of the first half when he sent a free-kick wide, while Raphael Guerreiro and Jadon Sancho went close for the hosts.
Neymar was booked after the break for a clash with Axel Witsel as things began to get a little tetchy.
The visitors were beginning to dominate with Kylian Mbappe denied twice by Roman Burki.
But Haaland struck from close range in the 69th minute, cashing in on a rebound in the area.
Neymar equalised in the 75th minute when he converted a cross from Mbappe.
But just two minutes later Haaland fired Dortmund ahead again, lashing in a superb effort from the edge of the box into the top corner.
Neymar came agonisingly close to levelling for a second time but his effort clipped the outside of the post.