How to render specific form elements from the *.theme file
The base hook form from the question is for rendering the HTML form tag. To render single form elements you need to specify a separate custom template.

1. Register the custom template in a theme hook

mytheme.theme or mymodule.module:

/**
 * Implements hook_theme().
 */
function mytheme/mymodule_theme() {
  return ['entity_moderation_form' =&gt; ['render element' =&gt; 'form']];
}


2. Add the custom template to the form

While building the form

EntityModerationForm::buildForm():

  public function buildForm(array $form, FormStateInterface $form_state, ContentEntityInterface $entity = NULL) {
    ...
    $form['#theme'] = ['entity_moderation_form'];
    return $form;
  }


or to an existing form in a form alter hook:

mytheme.theme or mymodule.module:

/**
 * Implements hook_form_FORM_ID_alter().
 */
function mytheme/mymodule_form_FORM_ID_alter(&amp;$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
  $form['#theme'] = ['entity_moderation_form'];  
}


You can skip this step if you use as template name the form id, see the comment from @BradJ.

3. Use the custom template to style single form elements

entity-moderation-form.html.twig:

{{ attach_library('content_moderation/content_moderation') }}
&lt;ul class="entity-moderation-form"&gt;
  &lt;li&gt;{{ form.current }}&lt;/li&gt;
  &lt;li&gt;{{ form.new_state }}&lt;/li&gt;
  &lt;li&gt;{{ form.revision_log }}&lt;/li&gt;
  &lt;li&gt;{{ form.submit }}&lt;/li&gt;
&lt;/ul&gt;
{{ form|without('current', 'new_state', 'revision_log', 'submit') }}


The example is from the core module Content Moderation.