There's no way (that I know of) to force the standard resolver library (see
man 3 res_query) to use TCP for all connections, although individual applications can do it my setting the
RES_USEVC flag when they start up.
Nor is there any way to configure BIND to only send queries over TCP.
I believe you might do it in theory by running Unbound locally and setting the "do-udp" flag to false, and then putting 127.0.0.1 in your DNS config in the Network control panel.
However the documentation is not clear whether that then prevents Unbound from answering queries received over UDP. I'll test that... No, it didn't work. I've e-mailed the author...
That said, you really shouldn't do this - you should find the real fault. I'm a strong believer in requiring TCP support in DNS (I wrote draft-ietf-dnsext-dns-tcp-requirements-03), but it's still only supposed to be used as a fallback when UDP messages are too big to fit either in 512 bytes or an extended EDNS0 compatible format.