When studying the economic content of cross sections of option price data, researchers either explicitly or implicitly view the discrete ensemble of observed option prices as a realization from a smooth surface defined across exercise prices and expiry dates. Yet despite adopting a surface perspective for estimation, it is common practice to infer the option pricing function, for each expiry date separately, slice by slice. In this paper, we suggest a semi-nonparametric estimator for the entire call price surface based on a tensor-product B-spline. To enforce no-arbitrage constraints in strike and calendar dimension we establish sufficient no-arbitrage conditions on the control net of the tensor product (TP) B-spline. Since these conditions are independent of the degrees of the underlying polynomials, the estimator can be parametrized with TP B-splines of arbitrary order. As example we estimate a smooth call price surface from S&P500 option quotes. From this estimate we obtain families of state price densities and empirical pricing kernels and a local volatility surface.