I'm not sure you give enough detail for a comprehensive answer. However, consider the respective speeds of the two interfaces you mention. Is your SPI interface 'too fast', such that a transaction (byte transfer) happens quicker than the UART can deal with it (transmit it)? If so, in the direction that doesn't work you could be sending data to your UART at a rate too high for it to deal with it.
Going the other way you're sending data from the slower interface to the quicker. So, you'll never be able to overload it.
A FIFO might help, depending on how you need to use the interface. If you send continuous data to the FIFO, as fast as the SPI interface will handle, the FIFO will simply fill up and you'll be back to where you started. A FIFO would solve this providing you don't fill it faster that the UART can empty it.
Regards,
Alex