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't Gardner'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)?