Here is the trick.  You have to diddle with the File >> Options >> Current Database settings  to select that your form DOES NOT step to a new record if you tab through the last field on the form.  Then you implement command buttons to do a Save or an Undo (they might call that a Cancel).  The button wizards will build the scaffolding but there is absolutely zero reason to not customize it a bit.
As part of the save button event code, set a flag that is in the class module declaration area.  Then have a BeforeUpdate event routine that checks the flag and if the flag is not set, cancel the event (which will cancel the update).  Then if you DO allow the update to occur, the Form_Current routine must CLEAR the flag.
You can also if you wish build a NEW RECORD button (which, when I used it, I called Create, just to have a short word for it).  You would NOT set the flag for a Create.
If you REALLY want to get picky, you have the Save button include code to validate all fields before it allows the Save action to occur.  Again, this will fit nicely into any event code built for you by the Command Button wizards.
Here is a "gotcha."  IF you have a form and sub-form together, if you try to enter data in the sub-form AND the parent and sub records have a formal relationship between them, Access will automagically create a parent-form record if you have enabled relational integrity.  This is because of the requirement that you cannot store a child record unless it is accompanied by a parent.