How to programmatically apply a fee/promotion?
After a lot of trial and error I thought of moving the code out of the form submit function and into an event subscription; in particular, i moved it to the commerce_order.order.paid event.
So I ended up with this in an existing event subscriber call back I already had:
  public function placeOrder($event) {
    $order = $event-&gt;getOrder();

    $fee = current(\Drupal\commerce_fee\Entity\Fee::loadMultiple());
    $price = $fee-&gt;getPlugin()-&gt;getConfiguration()['amount'];
    $splitter = \Drupal::getContainer()-&gt;get('commerce_order.price_splitter');
    $amounts = $splitter-&gt;split($order, new Price($price['number'], $price['currency_code']));
    foreach ($order-&gt;getItems() as $order_item) {
      $adjustments = $order_item-&gt;getAdjustments();
      $adjustments[] = new Adjustment([
        'type' =&gt; 'fee',
        'label' =&gt; $fee-&gt;getName(),
        'amount' =&gt; $amounts[$order_item-&gt;id()],
        'source_id' =&gt; $fee-&gt;id(),
      ]);
      $order_item-&gt;setAdjustments($adjustments);
      $order_item-&gt;save();
    }
  }

This code includes code to split the fee up among all the items; which may or may not be what you want (although doesn't seem like it could ever be a bad idea).