A polynomial-time soft-decision decoding algorithm for Reed-Solomon codes is developed. The algorithm is algebraic in nature and builds upon the interpolation procedure proposed by Guruswami and Sudan (see IEEE Trans. Inform. Theory, vol.45, pp.1755-64, Sept. 1999) for hard-decision decoding. Algebraic soft-decision decoding is achieved by means of converting the soft-decision reliability information into a set of interpolations points along with their multiplicities. The conversion procedure is shown to be optimal for a certain probabilistic model. The resulting soft-decoding algorithm significantly outperforms both the Guruswami-Sudan decoding and the generalized minimum distance (GMD) decoding, while maintaining a complexity that is polynomial in the length of the code. Asymptotic analysis for a large number of interpolation points is presented, culminating in a complete geometric characterization of the decoding regions of the proposed algorithm. The algorithm easily extends to polynomial-time soft-decision decoding of BCH codes and codes from algebraic curves.