Index: src/wp-includes/js/tinymce/plugins/wordpress/plugin.js
===================================================================
--- src/wp-includes/js/tinymce/plugins/wordpress/plugin.js	(revision 29463)
+++ src/wp-includes/js/tinymce/plugins/wordpress/plugin.js	(working copy)
@@ -102,6 +102,11 @@
 					'<img src="' + tinymce.Env.transparentSrc + '" data-wp-more="nextpage" class="wp-more-tag mce-wp-nextpage" ' +
 						'title="' + title + '" data-mce-resize="false" data-mce-placeholder="1" />' );
 			}
+
+			// Pad empty <span> so the parent block is not considered "empty" when no other content
+			if ( e.content.indexOf( '</span>' ) !== -1 ) {
+				e.content = e.content.replace( /<span( [^>]+)?><\/span>/g, '<span$1>&nbsp;</span>' );
+			}
 		}
 	});

@@ -383,6 +388,11 @@
 		// Keep empty paragraphs :(
 		e.content = e.content.replace( /<p>(?:<br ?\/?>|\u00a0|\uFEFF| )*<\/p>/g, '<p>&nbsp;</p>' );

+		// Remove padding from empty <span>
+		if ( e.content.indexOf( '</span>' ) !== -1 ) {
+			e.content = e.content.replace( /<span( [^>]+)?>(?:&nbsp;|\u00a0)<\/span>/g, '<span$1></span>' );
+		}
+
 		if ( editor.getParam( 'wpautop', true ) && typeof window.switchEditors !== 'undefined' ) {
 			e.content = window.switchEditors.pre_wpautop( e.content );
 		}
