This is a good sign that you are a good mom! Children act out to the person they feel safe with. He knows he can release his feelings and you will still love him nomatter what. Of course it's difficult for you, but it's normal. My daughter's teacher suggested we try "first time obedience." We've told her we're doing this, and so now she knows that if I ask her to do something, she has to listen to me, or timeout. There's no reason, although it's tempting as a parent, to give warnings. Warnings only teach them they don't have to listen to you the first time. Sounds like you're a great mom! :)
I think you need to get tougher.
Be stern, stick to your guns. But do not yell or freak out.
Keep your calm, set the rules and be firm.