Роман Нойштедтер родился 18 февраля 1988 года в городе Днепр, Украина. В то время отец Романа, Петр Нейштетер, играл за местный «Днепр». Роман рос, находясь с русскими по национальности мамой, бабушкой и дедушкой в Киргизии, а отца больше видел по телевизору. Сейчас его бабушка и тетя живут в России.
Отец Романа перешел в «Карлсруэ», а в 1994 году стал игроком «Майнца» на долгое время, из-за этого Роман стал тренироваться в академии этого немецкого клуба. Вскоре Нойштедтер-старший полностью переехал туда и вопрос с клубом для Романа был решен.
В 2006 году Роман стал игроком второго состава «Майнца», за который он выступал в течение трех сезонов, сыграв в общей сложности 68 матчей и забив 9 мячей. В сезоне 2008/09 стал подключаться к тренировкам с основной командой. В 2008 году 29 октября дебютировал во второй Бундеслиге в гостевом матче против «Фрайбурга», который «Майнц» выиграл со счетом 1:0. Роман на 83 минуте заменил нападающего Срджяна Баляка. Всего в первом сезоне в основной команде провел 16 матчей.
Перед сезоном 2009/10 подписал контракт с менхенгладбахской «Боруссией». Заиграть в основе не сумел, проведя всего два матча в Бундеслиге. Поддерживал форму, выступая во второй команде. Дебют же в Бундеслиге состоялся 16 августа 2009 года в домашнем матче второго тура против берлинской «Герты». На 84 минуте Роман заменил на поле Торбена Маркса.
В январе 2012 года Нойштедтер подписал контракт с «Шальке 04», но присоединился к команде из Гельзенкирхена в конце сезона. В июне 2016 решил не продлевать контракт с командой. По информации СМИ, вел переговоры с российскими клубами ЦСКА и «Рубином». В июле того же года Нойштедтер, покинув «Шальке 04», перешел в турецкий клуб «Фенербахче».
Нойштедтер сыграл 2 матча за молодежную сборную Германии до 20 лет против молодежных сборных Швейцарии и Италии. В 2008 году 9 апреля, выйдя на замену вместо Штеффена Хааса, Нойштедтер дебютировал за молодежную сборную против молодежной сборной Италии. Через 2 недели в ворота швейцарцев он забил свой первый и единственный гол за молодежную сборную до 20 лет. В 2011 году речь шла о привлечении Романа в сборную Украины, но главный тренер Олег Блохин опроверг эту информацию в 2012 году.
В 2012 году 9 ноября впервые вызван в сборную Германии на товарищеский матч с Нидерландами. А 13 ноября Нойштедтер дебютировал за сборную Германии, выйдя на замену на 87 минуте вместо Льюиса Холтби в товарищеском матче против сборной Нидерландов.
В ноябре 2015 года появилась информация о возможности предоставления Нойштедтеру гражданства России с целью выступления игрока за сборную. В мае 2016 года Роман был вызван в сборную России для подготовки к чемпионату Европы 2016 года и приступил к тренировкам. В конце мая появилась информация, что Нойштедтер отказался от немецкого гражданства ради российского. Президент России Владимир Путин подписал указ о приеме Романа Нойштедтера в гражданство Российской Федерации. И 1 июня в товарищеском матче против Чехии дебютировал за сборную России, выйдя на замену во втором тайме вместо Василия Березуцкого. А 11 июня в первом матче сборной России на Евро-2016 провел на поле 80 минут против сборной Англии.