Have you tried a naughty step or chair? We used the naughty step and it was great. Everytime he's bad put him on the naughty step for 4 mins, if he gets off before then put him straight back without saying anything, keep doing this until he has done 4 mins, once he has, bend down so you are level with him and explain to him firmly why he was put there, get him to say sorry and give him a hug. There will be tantrums but after a few times he will get used to it and hopefully will start listening to you.
No I haven't tried that but I will give it a shot. thank you :)