It sounds like you are hooking into the Processed (or later) phase of the Save operation, which will only be called after the save has happened.
You should instead hook into the Initiated phase of the save. This one occurs before the save and so giving the field a value will satisfy the mandatory requirement of the field when the save does occur.
Update: I feel kind of silly for not noticing this before, but this will never work in the CME, if the field is mandatory. It's not a problem with your event handler: the CME also does client-side validation and that is what is preventing your save in the first place.