个人认为,一般来说应该是in the sofa.
英语中,介词的使用是凭着说话人感觉而选择的,坐在沙发上的时候,由于沙发是软的,所以给人感觉陷下去了.所以用in.
但是如果是硬沙发,没有特别地陷下去,用on也可以.