I have ran into this back in Ubuntu 12.04, and understand how frustrating it can be.
Finding info on how to solve the issue can be even more frustrating because, thanks to the shakeups induced by the adoption of systemd, a lot of the older info is out of date, and the some of the solutions suggested may not work.
Here is a links that should get you started:
The basic strategy is to list the devices which could be causing spurious wakeup events with:
cat /proc/acpi/wakeup
Then you can try the method listed in the link above to toggle the events state to disabled by echoing it's name 4 letter abbreviation to /proc/acpi/wakeup.
The 4 letter codes you are echoing are abbreviations based on your specific hardware, for example on my laptop LID0 is the lid switch, and PWRB is the power button. I would stay away from disabling these since that could put you in a can't-wake-from-sleep condition, but others should be fair game to temporarily disable.
For example:
echo EUS1 | sudo tee /proc/acpi/wakeup
Would disable the EUS1 event. Then you can suspend and see if it stays asleep without issues, and wakes properly with the power button or lid switch.
This may help identify which wakeup event is causing the issue, but toggling the state of the event to disabled is not persistent, so when you reboot, the issue will return.
This prompted suggestions to place the fix into your /etc/rc.local startup script - which may fix the not-persistent-on-reboot issue, but apparently STILL may not be a complete fix on some hardware because the problem may return after the first sleep/wake event.
To get around this you can create a runs on wakeup type script, or try the "systemd solution" shown in the last post in the thread linked above.
I know this is a bit complicated, so if you have any questions, just start by running:
cat /proc/acpi/wakeup
... and copying and pasting the results from the terminal, and we'll take it from there.