It is hard, but I think it is really important to separate a child's behavior from how you feel others might think of you. This issue won't go away ever and kids pick up on it with their incredible sensors. He knows he can get away with it because you are embarrassed.
I have found it important to take a step back and think about the problem - am I simply embarrassed or is there an attitude or action which does also need changing.
Boys it seems mostly need quick, short, action to teach them to stop doing something - not long discussions with lots of words. Decide on the discipline (short, direct, something which is meaningful to him) ahead of time, explain it in a few concise words before anything happens, and immediately (not 2,3,4,5 chances) fulfill what you said you would do. Repeat until he stops. He has built up some 'muscles' in this area so it make take perseverance on your part.
But we're not here to raise children, but children in to adults who have self control and who care about others. We all come in to the world ego-centric = self-centered. We don't change unless our parents, day by day, year by year, mold it out of us in to being other-centered.
You can do it - it's our highest calling.