Index: src/wp-admin/js/customize-controls.js
===================================================================
--- src/wp-admin/js/customize-controls.js	(revision 31915)
+++ src/wp-admin/js/customize-controls.js	(working copy)
@@ -163,6 +163,7 @@
 			container.params = {};
 			$.extend( container, options || {} );
 			container.container = $( container.params.content );
+			container.contentEmbedded = false;
 
 			container.deferred = {
 				embedded: new $.Deferred()
@@ -499,6 +500,13 @@
 
 			if ( expanded ) {
 
+				if ( ! section.contentEmbedded ) {
+					_.each( api.section( section.id ).controls(), function( control ) {
+						control.embed();
+					} );
+					section.contentEmbedded = true;
+				}
+
 				if ( args.unchanged ) {
 					expand = args.completeCallback;
 				} else {
@@ -696,6 +704,12 @@
 				content = section.find( '.control-panel-content' );
 
 			if ( expanded ) {
+				if ( ! panel.contentEmbedded ) {
+					_.each( api.section( panel.id ).controls(), function( control ) {
+						control.embed();
+					} );
+					panel.contentEmbedded = true;
+				}
 
 				// Collapse any sibling sections/panels
 				api.section.each( function ( otherSection ) {
@@ -1163,8 +1177,6 @@
 				}
 
 				control.setting = control.settings['default'] || null;
-
-				control.embed();
 			}) );
 
 			control.deferred.embedded.done( function () {
@@ -2617,7 +2629,8 @@
 					rootNodes.push( section );
 				}
 				appendContainer = section.container.find( 'ul:first' );
-				if ( ! api.utils.areElementListsEqual( controlContainers, appendContainer.children( '[id]' ) ) ) {
+				if ( ! api.utils.areElementListsEqual( controlContainers, appendContainer.children( '[id]' ) )
+				     && section.contentEmbedded ) {
 					_( controls ).each( function ( control ) {
 						appendContainer.append( control.container );
 					} );
