Signal Iduna Park welcomed back around 25,000 fans, but it sounded more like 80,000 when Marco Reus swept home after a bulldozing Haaland run to give Dortmund the lead in the 23rd minute.
A bizarre Felix Passlack own goal cooled the party mood – the Dortmund right-back side-footed past Gregor Kobel from 18 yards as he attempted to contain Rafael Santos Borre's run – but normal service was resumed just past the half-hour mark.
Axel Witsel, operating at centre-back, cut out a teasing cross, prompting a blistering transition up the middle of the pitch. Gio Reyna and Reus helped the ball on to Haaland, who set up Thorgan Hazard to make it 2-1.
Haaland got on the scoresheet himself soon after, poking home Reus's flick-on past Stefan Ilsanker before racing away and finishing under Kevin Trapp.
Jude Bellingham had a shot on target charged down, before Dortmund extended its advantage with less than an hour gone.
A Haaland shot across goal was deflected into the path of Reyna, who, having instigated the melee with an effort of his own, reacted quickest to control and slot beyond Trapp.
It got worse still for Frankfurt as Haaland completed his brace after latching on to a Reus through-ball, the 21-year-old's composed finish standing after a VAR (video assistant referee) review.
Eintracht debutant Jens Petter Hauge's late strike was scant consolation as Marco Rose's Dortmund warmed up for Wednesday's (AEST) Supercup showdown with defending champion Bayern Munich in style.