We give an efficient algorithm for evaluating Bézier and B-spline tensor products for both positions and normals. The algorithm is an extension of a method for computing the position and tangent to a Bézier curve, and is asymptotically twice as fast as the standard bilinear algorithm.