ok so im feeling pretty stupid right now for not knowing what to do, but i really do need some advice.

My DS is 2 in not even 2 weeks and out of control. His SOOOO naughty, he throws things, hits (even if i smack him back which i hate doing he will just hit me again). he doesnt listen at all, he thinks its funny to run off (even if its onto a road). He can be such a good boy when he wants, but thats not very often.
I really need to get him into line as i have another baby on the way and it will make it so much easier if he was just the smallest bit more well behaved.
Does anyone have any ideas of punishment ect..? i hate smacking him, and im at my witts end... please please please help