Removing noise from audio using Fourier transform in Matlab
From my experience, your best bet is spectral subtraction. You can find a lot of literature about it on the web. Here just a quick overview of what you need to do. You take overlapping windowed blocks of your time domain signal and transform them to the frequency domain using an FFT. Then for each frequency bin you need to estimate the signal-to-noise ratio. There are several simple noise tracking algorithms that perform well if the noise is relatively stationary. Based on the estimated SNR per frequency bin you mulitply each bin with a gain constant between 0 (terrible SNR) and 1 (no noise). Note that you only deal with magnitudes, the phase of the FFT is left unchanged. After modifying the FFT bins with the gain factors, you combine the processed bins back to the time domain using the phase of the original noisy signal.

Here is a classic paper on this subject. It goes a bit further than pure spectral subtraction but the overall system is the same. Don't worry too much about the math involved to derive the optimal gain function.