How to get instance of referenced entity?
The path to referenced entity is very long:
// $id = some node ID
// $field = field name for entity reference field
$node = Node::load($id);

/** @var \Drupal\Core\Field\Plugin\Field\FieldType\EntityReferenceItem $referenceItem */
$referenceItem = $node-&gt;get($field)-&gt;first();

/** @var \Drupal\Core\Entity\Plugin\DataType\EntityReference $entityReference */
$entityReference = $referenceItem-&gt;get('entity');

/** @var \Drupal\Core\Entity\Plugin\DataType\EntityAdapter $entityAdapter */
$entityAdapter = $entityReference-&gt;getTarget();

/** @var \Drupal\Core\Entity\EntityInterface $referencedEntity */
$referencedEntity = $entityAdapter-&gt;getValue();

// At this point $referencedEntity is the referenced entity object.

Of course one can still get it via one liner call, but still, it is cumbersome and I wonder why EntityReferenceItem does not provide method that would return the reference entity object.
$referencedEntity = $node
  -&gt;get($field)
  -&gt;first()
  -&gt;get('entity')
  -&gt;getTarget()
  -&gt;getValue()
;

Note: if you have php 8, you can use the nullsafe operator:
$referencedEntity = $node
  ?-&gt;get($field)
  ?-&gt;first()
  ?-&gt;get('entity')
  ?-&gt;getTarget()
  ?-&gt;getValue()
;

It's also worth noting that it's quite easy to get array of all referenced entities:
$node-&gt;get($field)-&gt;referencedEntities();

It works because for entity reference fields $node-&gt;get($field) returns instance of EntityReferenceFieldItemList which implements referencedEntities() method.