Over the last decade, nuclear magnetic resonance (NMR) spectroscopy has evolved into a powerful method for determining structures of biological macromolecules. This has opened a unique opportunity for obtaining high-resolution three-dimensional structures in solution, in contrast to the well-established methods of X-ray diffraction, which are applicable only to solids and in particular single crystals. This rapid development has been spurred by several key advances in the field, especially the introduction of two- and three-dimensional NMR experiments, high field spectrometers (500 and 600 MHz), and computational algorithms for converting NMR derived restraints into three-dimensional structures. This review outlines the methodology employed for solving protein structures in solution, describing the basic NMR experiments necessary as well as introducing the concepts upon which the computational algorithms are founded. A variety of examples is discussed, illustrating the present state of the art, and future possibilities are indicated.