This is something that has been bothering me lately. She punched him in/on the shoulder. They both sound and look right to me, but is one preferred over the other?
I'm not sure about the grammatical implications of each, but I would use "in" to convey force and "on" for something that is only superficial. For example, a professional boxer would punch you "in" the shoulder, whereas a punch "on" the shoulder would be a friendly gesture. I say this because "in" suggests there is some penetrating force. Of course this is just my weird take on it. I have no sources to back this up other than how it "feels" when I read each one.
In = Penetration On = Friendly I agree with you Mouse... It all comes down to the context. In = Penetration On = Friendly
It seems to me that the location of the punching would make a difference as well? You might be doing it a friendly way, but I think it sounds funny to punch someone on the stomach. Perhaps it depends if the surface has the ability to have anything happen on it in the first place? Punch on a wall, punch in a wall. Punch on the leg, punch in the leg. Punch on the face, punch in a face. Idk.