I have the exact same problem with my DS12.
As PP says I find if I don't react to his attitude and pretty much ignore him, it drives him mad.
Another thing I find works with DS is to tell him how upset I am at his behaviour and until he can talk to me properly I don't want to see or speak to him and he goes to his bedroom. Normally after half an hour or so he will come and apologise and is Ok for the rest of the day.
I also find he is worse when I am tired and he picks up on it and will push and push until I react and then turns it back on me saying "you're always shouting at me"
.So now I try not to react and just ignore the behaviour and he usually gets bored and gives up.
I also agree with PP about how different he is when my partner is around, he still pushes my buttons, but he will try to get DP on his side by playing the victim and DP will tell DS he backs me 100% and if he wants respect he needs to earn it.
What really p*sses me off with him is, he will not accept responsibility for anything, it is always someone else fault. Someone else made him do it, someone else wound him up someone else....and on it goes.
Feel a bit better now
I'll be watching this with interest, hopefully pick up some tips.