I'm a manager of 29 employees and I know that if one of my employees would have mouthed off like that in front of others I would have confronted him or her right then. I wouldn't let that kind of disrespect get by because as one goes so do they all.
I'm the boss and I take charge. If someone dosen't like me, I'm ok with that as long as they do their job. I'm not here to be friends, or hang out after hours, etc. I am paid to do the job which is to make sure they do their jobs.
I would write him up regardless and since you offered him a way out and he didn't take it I'd write him up till my pen ran out of ink.
I give every problem employee 3 choices.
1. You can do the Job.
2. You can quit.
3. I can fire you.
Simple terms anyone can follow.
Good luck to you, stay strong.