Apply "non-causal" filter buffer-wise, a.k.a "soft real-time filtering"
Overlap-add or overlap-save/scrap with zero-padded data are the common methods of using block based convolution on streaming data.  Pad the convolution (FFT/IFFT fast, or linear) by at least the length of the impulse response above your desired noise floor, minus 1.  The basic idea is that these methods save the remainder of the impulse response that doesn't fit in the current block's filtered results, and applies that remainder to blocks that are processed later.  For linear phase FIR filters, this still incurs as least half the length of the impulse response in latency.