phase difference detection
For fractional delay filters see this article: https://www.dsprelated.com/showarticle/22.php. 

Timing error delay is not used for carrier recovery. Carrier offset and symbol timing offset are not the same thing.

Carrier recovery can be done at 1 sample per symbol assuming you do timing recovery first. For this a simple phase detector is the cross product phase detector where you derive phase from the imaginary term of the complex conjugate product. 

The Gardner Timing Error Detector is a good choice as it can determine timing offset over a relatively large carrier offset. If resolving timing offsets to within 1/10th of a symbol then this would be a very simple approach without further interpolation. However, I question why the OP precludes interpolation; combining a timing error detector with a polyphase interpolator is an excellent approach to resolve timing with fractional delay filters without having to increase the sampling rate- however interpolation techniques are still applied. 

I have more information in other posts for both of these approaches listed below:

Gardner TED:

Isn&#39;t Gardner&#39;s algorithm and Early-Late gate the same thing?

Fractional spaced equalizer + timing (clock) recovery

Phase Detectors and Carrier Recovery Loops

Phase synchronization in BPSK

More Carrier Recovery and Timing Recovery

How to demodulation BPSK in real case(through a channel)?