I struggled with a similar problem on a desktop PC with Gnome 3.38 on Wayland for quite some time, the solution was to change the setting "IgnoreLid" to "true" in /etc/UPower/UPower.conf. Desktop PCs don't have a lid, so I think (at least in some cases) the Kernel reports garbage instead of reporting the lid as always open.
EDIT: I was too hasty to declare this as solved. Nope: in half of the cases, especially when sending the PC to suspend right after boot up, the monitor was still going to sleep after waking up for several seconds because of no video signal present.
Anyway, I've spend almost two days trying to find a clean solution, tried playing with DPMS and ACPI, but finally ended up with the following crude workaround: I've installed the ydotool and created a systemd service file /etc/systemd/system/resume_gnome_workaround.service with the following contents:
[Unit]
Description=Workaround for the monitor wakeup problem in Gnome 3.38
After=suspend.target hibernate.target hybrid-sleep.target suspend-then-hibernate.target
[Service]
Type=exec
ExecStartPre=sleep 1
ExecStart=ydotool mousemove 10000 10000
[Install]
WantedBy=suspend.target hibernate.target hybrid-sleep.target suspend-then-hibernate.target
Then I enabled it with systemctl enable resume_gnome_workaround.service. It simply simulates a mouse movement one second after going from suspend. At least it works for me in 100% of the cases.