Haaland picked up where he left off by scoring the league's first goal, and his 13th in 12 appearances for Dortmund, following a two-month suspension in a Revierderby played out in an empty Signal Iduna Park.
Guerreiro got a second after a one-two with Haaland as Dortmund closed the gap on leaders Bayern Munich, who face Union Berlin on Sunday, to one point.
Giovanni Reyna was set to make his first senior start for BVB but sustained an injury in the warm-up and was replaced by Hazard, with Jadon Sancho remaining among the substitutes, who sat spaced apart and wearing facing masks.
After a high-tempo start Daniel Caligiuri was denied by Roman Burki – the keeper making his 200th appearance for Dortmund – before Haaland opened the scoring.
Julian Brandt's delicate flick released Hazard and his delightful cross in behind the defense was turned home first time by Haaland in the 29th minute, with his team-mates largely keeping their distance during the celebrations.
Lucien Favre's men doubled their lead on the stroke of half-time, sweeping forward after collecting Schubert's poor clearance and seeing Guerreiro drive Brandt's pass across goal and into the bottom-right corner.
Schalke sent Rabbi Matondo and Guido Bergstaller on at the break but they quickly fell further behind when Hazard finished a swift counter-attack by firing past Schubert, who should have done more to keep the effort out.
The hosts moved completely out of sight when Guerreiro stormed forward and slotted home after an exchange of passes with Haaland in the 63rd minute.
Schalke took advantage of a rule change meaning up to five substitutions can be made but Dortmund had done enough to claim their 800th Bundesliga win in the 180th Revierderby.
What does it mean? A sign of things to come
Certain measures to avoid unnecessary contact were taken in Dortmund; those not starting the game made their way out in masks and sat on seats spread out along the sideline, while players took care not to get too close to one another when celebrating goals. There were also early muscular injuries for Reyna and Jean-Clair Todibo, who had to go off at half-time. It could well be the way football remains for the foreseeable future.
A sign of things to come
Schubert was appearing in just his seventh Bundesliga game and he was only selected due to Alexander Nubel being marginalised for agreeing a move to Bayern Munich at the end of the season. His error led to Dortmund scoring their second and he should have done better on the third too.
Brandt the real star
Haaland and Guerreiro will undoubtedly share the headlines, but Brandt was truly brilliant for Dortmund. The vision and execution he displayed in the build-up to the opener has excellent, while his pass to set up Guerreiro for the second was perfectly weighted. He also teed up Hazard to finish with a pair of assists.
Dortmund travel to Wolfsburg next Saturday, while Schalke are in action at home to Augsburg the following day.