Рязанский князь Олег пошел еще дальше. Он не только сам «встретил царя Тохтамыша на украинах своей земли Рязанской», но даже «броды ему указал на Оке». Московская рать двинулась было навстречу Тохтамышу, но другие князья не прислали свои дружины. Биться же «в поле», в открытом бою со всей ордой Тохтамыша было невозможно. И Дмитрий Донской, «уразумев в князьях и в боярах своих и во всех воинствах распрю, а еще и оскудение воинства», принял решение отступить. Он «силу распустил» для защиты городов, а сам с небольшой дружиной отъехал на север, в Кострому. План великого князя Дмитрия Донского был рассчитан на крепость московских крепостных стен и на решимость москвичей защищать столицу. Хан Тохтамыш должен был надолго задержаться под Москвой, а за это время Дмитрий Донской надеялся собрать в Костроме войско и освободить столицу от осады. Другое войско начал собирать двоюродный брат великого князя — Владимир Андреевич, который стал лагерем в Волоке-Ламском, в 100 км от Москвы. Вероятно, этот план был правильным, принимая во внимание недостаток сил, однако Москва в схватке с Тохтамышем могла рассчитывать пока только на свои силы.
Между тем ордынцы перешли реку Оку по бродам, указанным рязанским князем, «и прежде всех взяли град Серпухов, и оттуда пошли к Москве, воюя». Над Москвой нависла непосредственная опасность. Часть бояр и члены княжеской семьи хотели бежать из города при приближении врага; дело обороны взяли в свои руки горожане, простые люди Москвы. По сообщению летописца, «во граде Москве мятеж был великий: одни бежать хотели, а иные в граде сесть в осаду хотели». Посадские люди прекратили начавшуюся было панику; они «во всех городских воротах с обнаженным оружием стояли и с ворот метали камни, не пуская никого уйти из города». Бояре были вынуждены влиться в ряды защитников Москвы. За городские стены были выпущены только митрополит Киприан и семья великого князя. Москвичи говорили: «Не устрашимся нахождения татарского, потому что имеем град каменный и ворота железные. Не смогут татары стоять под городом нашим долго, потому что боятся нас из города, а извне князей наших боятся». Город готовился к обороне. Москвичи сами сожгли посады за кремлевскими стенами, чтобы враг не мог подойти незамеченным, не было прикрытия татарским лучникам, а также материала для устройства приметов (завалов).
В полдень 23 августа разъезды войска Тохтамыша появились под Москвой. Группа татар с толмачом-переводчиком подскакала к стенам. Татары кричали: «Есть ли князь Дмитрий во граде?». Со стены ответили: «Нет его в граде». Объехав вокруг стены Кремля, татарские разъезды скрылись в лесах, окружавших Москву. 24 августа войска хана Тохтамыша осадили город. Началась перестрелка. У москвичей были самострелы, издали поражавшие врагов, и даже пушки — тюфяки. Татарские лучники ответили ливнем стрел, которые убили и поранили многих защитников стен: степняки лучше горожан владели этим оружием, стреляли метко. Но когда толпы татар с лестницами бросились на штурм, они сами несли тяжелый урон. «Горожане, воду в котлах скипятив, лили на них кипяток», «стреляли и камнями сшибали», «пушки пускали на них». А «некто горожанин Москвитин, су-конник, именем Адам, с Фроловских ворот пустил стрелу из самострела и убил некоего из князей ордынских сына, знатного и славного, и великую печаль причинил Тохтамышу-царю и всем князьям его». Два приступа ордынцев были отбиты. Враг отошел от неприступных кремлевских стен и начал осаду города.
Три дня стоял хан Тохтамыш под Москвой, окружив ее тесным кольцом своих отрядов. Город продолжал оставаться неприступным. Тогда хан начал переговоры с осажденными. Ордынцы убеждали москвичей: «Хан вас хочет жаловать, потому что неповинны вы, не на вас пришел хан, а на князя Дмитрия. Ничего не требует от вас хан, только встретьте его с честью и легкими дарами, а вам всем мир и любовь!». Летописец не сообщал, почему москвичи поддались на уговоры хана. Можно предположить, что какую-то роль в решении москвичей сдать город без боя сыграло боярство, которое еще до начала осады заняло пораженческую позицию.
26 августа москвичи открыли городские ворота. Делегация бояр встретила ордынцев, но те, размахивая саблями, «в город ворвались, и одних иссекли, а других пленили, и церкви разграбили, и множество книг, снесенных отовсюду в осаду, пожгли, и богатство и казну княжескую взяли». Город был разграблен и сожжен, уцелевшие от резни москвичи взяты в плен.
Разорив Москву, хан Тохтамыш разделил свое войско на несколько частей и направил во все стороны для грабежа. По сообщению летописца, одни татарские отряды пошли к Переяславлю, «другие Юрьев взяли, а иные Звенигород, и Можайск, и Боровск, и Рузу, и Дмитров взяли, волости и села пленили. Переяславль же, взяв, сожгли, а горожане многие на озеро выехали на судах и тем спаслись». Но задерживаться долго в русских землях Тохтамыш побоялся. Под Волоком-Ламским передовой отряд ордынцев был разбит князем Владимиром Андреевичем. Пришли вести о том, что в Костроме великий князь Дмитрий Донской собрал войско и готовится к удару. И хан Тохтамыш начал отступление. По дороге в степи ордынцы разорили Коломну, а затем вторглись в Рязанское княжество. Князю Олегу рязанскому не помогло его предательство: рязанское княжество было страшно опустошено. По сообщению летописца, ордынцы «повоевали Рязанскую землю» и отошли восвояси «с бесчисленным богатством и бесчисленным полоном».
Великий князь Дмитрий Иванович возвратился в свою разоренную столицу. Обстановка была исключительно трудной. Укрепления Москвы были разрушены. Пограничные крепости сожжены. Московское княжество обезлюдело; тех, кто уцелел от резни, ордынцы увели в плен. Сразу активизировались противники Москвы. Князь Михаил тверской «пошел к Тохтамышу в Орду с честью и дарами, ища себе великого княжения Владимирского и Новгородского». Следом за ним отправился к хану и князь Борис городецкий. Ненадежны были и другие князья. Феодальная раздробленность снова на время взяла верх над общерусскими интересами. И Дмитрию Донскому пришлось смириться. Он послал к хану своего сына Василия, чтобы «тягаться о великом княжении Владимирском и Новгородском с князем Михаилом Александровичем тверским». Тохтамыш передал «ярлык» на великое княжение московскому князю. Но за это Дмитрию Донскому пришлось заплатить дорогую цену: снова в Орду потекли тяжкие «дани» и «выходы» с русских земель. Хан восстановил свою власть над Русью.
Однако на Руси такое положение расценивалось как временное, вынужденное. Куликовская битва подорвала веру во всемогущество Орды. Князья уже считали свержение ига реальным делом. Это нашло отражение в духовных и договорных грамотах. Князья специально оговаривали новые условия в том случае, если «переменит бог Орду», т. е. если будет свергнуто иго. В духовной грамоте великого князя Дмитрия Донского (1389 г.) прямо