entity_metadata_wrapper - how to remove one item from entity reference field
Use unset instead, followed by a save:

unset($wrapper-&gt;field_foobar[$delta]);
$wrapper-&gt;save();


To find the delta, you can iterate over the collection and look for the node id:

foreach($wrapper-&gt;field_foobar as $delta =&gt; $item)  {
  if ($item-&gt;nid-&gt;value() == $my_id) {
    unset($wrapper-&gt;field_foobar[$delta]);
    $wrapper-&gt;save();
    break;
  }
}