Winger Olsen opened the scoring for Denmark, who lost to England in their Euro 2020 semifinal, in the 23rd minute, rifling the ball home from a tight angle after Pierre-Emile Hojbjerg hit a post and the home side failed to clear.
Ten minutes later Olsen's attempted cross was handled in the box by Denis Marandici, and captain Simon Kjaer fired the resulting penalty into the top right corner for a rare international goal in his 116th appearance.
The 21-year-old Olsen then drilled a corner to the back post for Christian Norgaard to bundle home his first international goal to make it 3-0 in the 39th minute, and full-back Joakim Maehle added a fourth just before half-time.
There was little let-up in the second half as the Danes continued to pour forward without adding to their goal tally, and the home side did not manage to fashion a single effort on goal during a torrid 90 minutes.
The win leaves Denmark top of Group F with 21 points from a perfect seven wins from seven and no goals conceded, with a seven-point lead over second-placed Scotland. Moldova are bottom of the six-team group with one point.