A solution is to assign each item in the dom-repeat a unique id, then set the innerHTML on that item after the render.
In the following code (and this pen) I set an id with _assign(index). In the ready() method, I call Polymer.RenderStatus.afterNextRender to wait for all items to draw, then set the anchors' innerHTML's in the same manor using a querySelector on that id:
<dom-module id="show-entity">
  <template>
    <style>
      :host {
        display: block;
      }
    </style>
    <template is="dom-repeat" items="[[items]]">
      <a target="_blank" id="[[_assign(index)]]" href="[[item.url]]"></a><br>
    </template>
  </template>
  <script>
    /**
     * `show-entity`
     * https://stackoverflow.com/questions/21060890/
     *
     * @customElement
     * @polymer
     * @demo demo/index.html
     */
    class ShowEntity extends Polymer.Element {
      static get is() { return 'show-entity'; }
      static get properties() {
        return {
          items: {
            type: Array,
            value: () => { return []; }
          }
        }
      }
      ready() {
        super.ready();
        this.items.push({
          label: '© Google 2018',
          url: 'http://www.google.de'
        },{
          label: '§ Google 2018',
          url: 'http://www.google.de'
        });
        Polymer.RenderStatus.afterNextRender( this, () => {
          this.items.forEach((el, idx) => {
            let id = this._assign(idx);
            this.shadowRoot.querySelector('#'+id).innerHTML = el.label;
          });
        })
      }
      _assign(index) {
        return 'foo'+index;
      }
    }
    window.customElements.define(ShowEntity.is, ShowEntity);
  </script>
</dom-module>
Note that you must import polymer/lib/utils/render-status.html to use Polymer.RenderStatus.afterNextRender.