We suggest a semi-nonparametric estimator for the call-option price surface. The estimator is a bivariate tensor-product B-spline. To enforce no-arbitrage constraints across strikes and expiry dates, we establish sufficient no-arbitrage conditions on the control net of the B-spline surface. The conditions are linear and therefore allow for an implementation of the estimator by means of standard quadratic programming techniques. The consistency of the estimator is proved. By means of simulations, we explore the statistical efficiency benefits that are associated with estimating option price surfaces and state-price densities under the full set of no-arbitrage constraints. We estimate a call-option price surface, families of first-order strike derivatives, and state-price densities for S&P 500 option data.