Very basically TLS has always used a form of authenticated encryption. For this it used HMAC to calculate the authentication tag, followed by CBC encryption. This has the unfortunately disadvantage that padding oracle attacks are possible before the authentication tag is verified.
TLS 1.2 later added support for GCM, which is an authenticated cipher. It is an AEAD mode of encryption, Authenticated encryption with Associated Data. This means that it will verify an authentication tag as part of the decryption procedure. This offers message integrity and authentication, as HMAC + CBC did before that.
However, a good authenticated cipher has advantages over such constructions. First of all, it offers a standardized mode of operation. GCM and CCM are standardized ciphers by NIST. That als means that secure, accelerated implementations are generally found in crypto libraries. It also means that mistakes such as padding oracle attacks or forgetting to include the IV are avoided.
Finally, GCM is very efficient on CPU's that have support for specific instructions. For Intel/AMD this would be the PCLMULQDQ instruction (ARM has similar acceleration on most chips used for mobile devices). If that's missing an authenticated cipher that targets speed on general hardware such as ChaCha20/Poly1305 may be preferred.
CTR provides similar performance as CBC; for both modes you perform one block cipher operation for each block of plaintext (i.e. one AES block operation for each 16 bytes). The additional benefits of CTR with regard to - for instance - parallelization / multi-threaded operation are not enough to create a special CTR+HMAC mode.
Finally, CTR is still used in TLS as it is the underlying cipher mode for CCM / GCM. So it is used, but it is hidden from plain sight.