We generate independent Gaussian random variables on a regular grid and use a spatial filter to smooth the independent random variables to obtain a spatially correlated Gaussian random field. The FFT is used to speed up the smoothing since convolution is a simple cell by-cell multiplication in the Fourier domain. A representation of the spatial convolution filter in the Fourier domain is efficiently obtained from the FFT of any stationary correlation function. Since FFT is cyclic, the grid must be padded to ensure that opposite sides are uncorrelated. The size of the padding is discussed in detail. Most standard covariance functions fail to be positive definite on finite cyclic domains. This causes striping artifacts in the final simulated realizations and failure to meet statistical properties such as variogram reproduction in the simulated realizations. These problems are addressed and solutions are provided to ensure near perfect statistical properties of the generated realizations. The method is fast and can generate a hundred million grid cell realization in approximately 1.5 minutes on a standard laptop PC. The method scales approximately linearly in the number of grid cells.