Surface blending is a useful operation in geometric design for rounding sharp edges or corners. Meanwhile, NURBS has already become the de facto industrial standard in existing CAD/CAM systems. Therefore, it is required to study how to blend two B-spline surfaces. However, two arbitrary B-spline surfaces (called base surfaces) are hard to be blended with a B-spline surface (called blending surface) because the knot vectors of the two base surfaces are usually mismatched. In this paper, we proposed a curve-based spline representation, i.e., the semi-structured B-spline surface, which is generated by skinning a series of B-spline curves with different knot vectors. By assigning suitable knot vectors to the head and tail skinned curves, the semi-structured B-spline surface can blend two B-spline surfaces smoothly without disturbing them at all. We formulated the B-spline surface blending problem as an optimization problem with continuity constraints, and the continuity between the base and blending surfaces can reach G2 or C2. Examples illustrated in this paper validate the effectiveness and efficiency of our method.