The command NotebookSave[] can rescue you at times.
It has happened to me that I think I am saving with ctrl-S but then I discover that actually nothing is being saved. The star (asterisk) next to the filename in the title bar does not disappear (giving the most obvious hint that something is wrong if you actually look) and checking the timestamp in the notebook's folder shows that the file has not been changed.
Trying Save (or Save As...) from the file menu also does nothing when this problem has arisen. And other opened notebooks cannot be saved either in this state. When this has happened to me, it has been possible to use Save Selection from the file menu to at least have a copy in other forms (like PDF), but while this might at least make a record of the commands, it is tedious to find and type in the changes since the last successful save (after you give up and force Mathematica to close).
It just happened to me again (for the third time ever). And I discovered that the command NotebookSave[] saves the file -- just execute it as a command in the very file that you have been trying to save. (Check the documentation for other options; I didn't try the other forms of the command.) In my case it just saved everything, the "star" disappeared, the timestamp updated, and all was well. Not only that, but other files could now also be saved in the usual ways; the system seemed cured. (But I took the opportunity to restart the program in case some cooties were still lurking.)
Why it happened is a mystery, but I was over 3000 commands deep in this particular session (probably about a week long), with about two dozen other notebooks loaded and some in various states of being edited. And I noticed that my open folders had all vanished from the File Explorer list. And the Directory[] command in Mathematica gave a different directory than earlier, reverting to a default user directory. So either Mathematica (version 13) or the operating system (Windows 11) was feeling poorly.
Oh, and as is typical for me, I had just recently managed to execute some buggy commands that spit out reams of warnings about recursion overflows and such, the usual careless thing. Often when that happens, the kernel crashes. In this case it did not, so I merrily proceeded as if everything was okay. Maybe it was not.