Rarely a Power button is broken, but it can happen, so you can not turn it off.
But to check your instant wake up with lid open check in the Console if it was just hibernating.
Open Console in your utility folder and look for times after you turned it OFF.
You might see some activity few hours later while you were sleeping, that would tell you it was just hibernating.
Something like 2/3/15 6:02:40.000 AM kernel[0]: Wake reason: EC.SleepTimer (SleepTimer)
shows that mine was just hibernating -not off.
And here is a full sequence when Turning it OFF then 3 minutes later Turning in on with Power Button.
2/3/15 9:54:26.567 AM shutdown[529]: SHUTDOWN_TIME: 1422986066 567166
2/3/15 9:54:26.000 AM kernel[0]: Kext loading now disabled.
2/3/15 9:54:26.000 AM kernel[0]: Kext unloading now disabled.
2/3/15 9:54:26.000 AM kernel[0]: Kext autounloading now disabled.
2/3/15 9:54:26.000 AM kernel[0]: Kernel requests now disabled.
2/3/15 9:57:58.000 AM bootlog[0]: BOOT_TIME 1422986278 0