The method of doing this depends upon which release you are using.
In R2014a or earlier, SortOrder did not exist and the underlying renders had different code. In those versions if you used the painters renderer, the child order would be respected, and it could be manipulated by using uistack(). However if you were using OpenGL renderer (which can get triggered automatically if you have transparency anywhere in the figure), then you were at the mercy of the way OpenGL is defined. In OpenGL, when there is a line and a surface at the same z depth, the line is to be drawn on top of the surface, no matter what the child order. However, it has been common for there to be bugs in OpenGL renderers that get this exactly reversed; if you had such a buggy driver and are using R2014a or earlier, you cannot get the patch under the line without modifying the patch.
In any of the versions, this all is an issue only when the patch and the line are in the same plane. For both of them, a 2D specification will be equivalent to z = 0. You can fix the problem by giving z coordinates for the patch that are "behind" the line relative to the viewing angle. This is not exactly the same as negative coordinates, because the viewing angle might be from negative z: if you rotate the object, do you need the line to stay "in front of" the patch or do you want the line to go "behind" the patch when you look from below? Using R2014b and SortOrder 'childorder' and setting the patch to draw first in the order would keep the line "on top of" the patch, which is not the case if you deal with the issue by giving negative z coordinates for the patch.