Мстислав был сыном
Изяслава II, великого князя Киевского, и
Агнес фон Штауфен, но дата рождения его неизвестна, предположительно около 1125 года. Вместе с отцом, потомком
Владимира Мономаха, он принимал участие в борьбе против черниговских князей и
Юрия Долгорукого. Сначала он был князем Переяславским под именем Мстислава I и в 1151 году женился на дочери польского князя
Болеслава III,
Агнешке. Она родила ему троих сыновей. В 1152 году родился
Роман, который впоследствии стал князем Новгородским.
В 1153 году на реке Псел Мстислав потерпел поражение в бою против половцев. У него родился сын Святослав, ставший потом князем Брестским. Лишившись поддержки отца, который умер в 1154 году, в 1155-м Мстислав бежал в Польшу, спасаясь от Долгорукого, но заручившись помощью тестя, собрал новое войско. Он вернулся и под Владимиром победил Долгорукого, затем стал князем Волынским и Владимирским, занимаясь укреплением своего княжества.
Когда Юрий Долгорукий умер в 1157 году, Мстислав стал князем Киевским, но предпочитал жить во Владимире.
У него родился третий сын,
Всеволод, унаследовавший впоследствии Владимирский престол. Через год Мстислав передал Киев своему дяде
Ростиславу I, а с 1163 года правил вместе с ним. Когда Ростислав умер в 1167 году, Мстислав снова стал владеть Киевом, став великим князем. Киевляне его очень любили.
14 апреля 1168 года Мстислав послал своего сына Романа в Новгород, чтобы ещё больше укрепить свою власть. В 1169 году Киев был завоёван Андреем Боголюбским, сыном Юрия Долгорукого, бывшим в то время князем Суздальским. Мстислав уехал в Византию, заручился там поддержкой императора Мануила I Комнина (который даровал ему округ Отскалана) и вернулся в Киев, чтобы снова отвоевать его у Андрея Боголюбского.
Через год Боголюбский опять отнял Киев у Мстислава, который был изгнан в Волынь, где умер 19 августа 1170 года. Мстислав II Изяславич был последним великим князем Киевским, после чего этот титул хоть и продолжал существовать, но утратил своё значение, а наибольшую политическую силу приобрело княжество Владимирское.