Как я понял, ответ так и не был дан. С помощью CSS - никак, ведь CSS не могёт менять DOM-дерево.
С помощью JS - запросто, но уж точно не через setTimeout!
const item = document.querySelector('.item');
item.style.opacity = '0';
item.addEventListener('transitionend', function() {this.remove()});
Пояснение: цепляете нужный вам элемент, потом меняете ему прозрачность и прослушиваете событие transitionend по наступлению которого удаляете элемент из DOM (при этом это произойдет плавно и незаметно для пользователя).
PS: по поводу совместимости у 'transitionend' - все чикибамбони. Поддерживает даже IE10+