Try positive reinforcement--reward him on his good behavior.
This doesn't always have to be store-bought or anything--it can be something as simple as playing a game or doing some other activity together. Majority of the time when a child "acts out" it's because he/she wants attention from the parent and finds the best way to get it is in a negative
way. If you give your son a little of yourself when he behaves in appropriate ways this will make him want to "act out" less and less.
Another idea is to create a chart that covers 1 week. Each night before your son goes to bed go over the day and for each time he behaves appropriately he gets a point on his chart. (You can track this with stickers, drawing a smiley face, etc.) When he reaches a predetermined amount of points
(established by both you and your son) he gets a reward. The
bigger the reward the more points it'll take. I have found this to be especially useful with my son through several things in the past.