If you're running it through the skinning parser, you should be able to even get away with a [CONTENTPANE] token I would believe. However the generic pane layout I use is:
<TABLE width="100%" cellspacing="0" cellspacing="0">
<TR>
<TD class="toppane" colspan="3" id="TopPane" runat="server" valign="top"></TD>
</TR>
<TR valign="top">
<TD class="leftpane" id="LeftPane" runat="server" valign="top"></TD>
<TD class="contentpane" id="ContentPane" runat="server" valign="top"></TD>
<TD class="rightpane" id="RightPane" runat="server" valign="top"></TD>
</TR>
<TR>
<TD class="bottompane" colspan="3" id="BottomPane" runat="server" valign="top"></TD>
</TR>
</TABLE>
Now, I've never tried wrapping that inside an ASP control, however I'm curious that if you're inserting controls I would assume you're creating an ASCX file which shouldn't need to be parsed by the skinning engine (by which, I'm referring to the parsing engine when you upload your skin package as HTML/XML/CSS in a ZIP). If you're referring to how it renders the skin post-parsing, I'm not entirely sure as I've never had a situation requiring putting panes in an ASP Control/Panel.