Вставлять в разметку не нужно. Нужно стилями менять цвет. Тогда можно и transition для плавности использовать. Если это иконка в svg или иконочный шрифт, само собой.
Ховер должен срабатывать на каком-то элементе. Через стили можно "создать" псевдоэлемент и поместить в него иконку, если она сделана шрифтом или через svg.
Дальнейшее обсуждение можно вести только имея пример кода перед глазами.