Одни говорят «в городе Москва», другие — «в городе Москве», причём и те, и другие уверены, что верный именно их вариант. В поисках правды мы однажды наткнулись на невероятно активное онлайн-обсуждение этой темы, из которого узнали, что в одни и те же годы учеников разных школ учили по-разному. Поэтому участники горячего спора разделились на два лагеря, каждый из которых был полностью уверен в своей правоте.
Мы не нашли подтверждения тому, что в XX веке была, например, двойная норма или же одна норма сменила другую, откуда и пошла путаница. Но представители старшего поколения утверждают: одни — что их учили склонять географическое название после слова «город», другие — что их учили не склонять это же самое название.
В любом случае сегодня норма одна.
Географическое название (топоним) русского и славянского происхождения или представляющее собой давно освоенное заимствование, употреблённое с родовым город, деревня, село, посёлок и другими, склоняется.
Верно: в городе Москве, из города Саратова, за деревней Сосновкой, по реке Ангаре.
Есть и случаи, в которых топонимы не склоняются после родовых наименований:
- Географическое название представляет собой форму множественного числа. Например: в городе Химки, под городом Минеральные воды, из города Великие Луки.
- Родовое слово и географическое название имеют разный род. Например: вдоль реки Енисей, в посёлке Анна, на озере Байкал.
Внимание: правило не относится к родовому наименованию «город»! - Географические названия на «-ово/ -ево», «-ино/-ыно». Например: в городе Голицыно, от района Митино, из села Васильково.
Обратите внимание, что без родового слова эти топонимы могут склоняться или не склоняться — допустимы оба варианта.
Что касается составных названий в форме единственного числа, таких как Нижний Новгород, Лодейное поле, Вышний Волочёк: большинство справочников и словарей указывают на то, что подобные топонимы не склоняются. Однако в других словарях указана иная норма: склоняются обе части наименования. Поэтому «в городе Нижнем Новгороде» или «в городе Нижний Новгород» — на ваше усмотрение.