I think the main difference between TCP/IP and OSI model is that one is protocol-specific and one is as-generic-as-can-be.
The question is not TCP/IP or OSI as they are not incompatible. TCP is a layer-4 protocol in the OSI model and IP is a layer-3 protocol in the OSI model. But there are many other protocols that can be adapted in these layers. For example IPX, IGMP and ICMP are other layer-3 protocols and UDP is another layer-4 protocol.
Also the OSI models covers more as it includes lower layers which are very important to the networking world. One problem with the OSI layer is that it is a little bit too "extensive" as layers 5 through 7 are often merged into one.
Not contradictory. Just different.