You shouldn't connect anything with output impedance of >about 10k to an analog input. 3.3M is too much: you won't charge up the port properly, which is why you get these erratic readings. As I said before: using a single resistor (or no resistor at all) you will ALWAYS get the full voltage at that port.
To get a voltage <3.3V at the A0 you need a voltage divider. For the ESP8266 (I assume the WROOM is the same), the ADC goes from 0-1.06V for 0-1023 reading. You have to reduce your voltage to about 1/4. So Vcc - 10k - A0 - 3k3 - GND will work fine for that. But then you also have a significant current leakage of 0.25 mA through those resistors - a waste when you're on battery power.
Instead on the ESP8266 modules you can use the ESP.getVcc() command to read the voltage on the Vcc pin. To make this work, you also have to add ADC_MODE(ADC_VCC); to the top of your sketch, and disconnect A0/TOUT. Note that you can not use the analog pin for anything else when switching it to read Vcc.