Почав футбольну кар'єру в «Селтіку», де виступав протягом 3 сезонів (1980—1983). Згодом досить регулярно змінював клуби, виступаючи, зокрема, за «Кембридж Юнайтед», «Бристоль Сіті», «Данфермлін Атлетік». Завершив кар'єру 1998 року в «Престон Норс Енді», після чого у 1998—2002 роках тренував цей клуб, не досягши особливих успіхів.
Поворот у кар'єрі настав після переходу до «Евертона». З цим клубом двічі пробивався у єврокубки, чого не вдавалося жодному тренеру команди з 1985 року. 16 листопада 2008 року відбувся 250-й матч «Евертона» під його керівництвом.
9 травня 2013 року його було оголошено новим тренером «Манчестер Юнайтед». Цю посаду Моєс зайняв 1 липня, замінивши сера Алекса Ферґюсона, який тренував команду протягом 26 років. Тренер підписав із клубом контракт на шість років[1]
11 серпня Моєс дебютував як головний тренер «Манчестер Юнайтед» в офіційному матчі на Суперкубок Англії проти «Вігана»[2]. Зустріч завершилася перемогою «Юнайтед» з рахунком 2:0[3]. 17 серпня «Юнайтед» провів першу зустріч Прем'єр-лізі під керівництвом Моєса: матч проти «Свонсі Сіті» завершився перемогою «червоних дияволів» з рахунком 4:1[4]. Після поразки від «Евертона» 20 квітня 2014 року «Юнайтед» втратив шанси потрапити в Лігу чемпіонів наступного сезону, і вже через два дні Моєс був відправлений у відставку[5]. На момент його звільнення команда займала 7-е місце в турнірній таблиці чемпіонату, програвши 11 матчів, що стало найгіршим результатом в історії виступів клубу в Прем'єр-лізі.
11 листопада 2014 року Девід Моєс очолив іспанський «Реал Сосьєдад»[6]. Контракт з шотландським фахівцем укладено на два роки. У першому матчі під керівництвом Моєса «Реал Сосьєдад» зіграв внічию з «Депортіво Ла-Корунья» (0:0). 10 листопада 2015 року керівництво іспанського клубу відправило Девіда Моєса у відставку. Це рішення пов'язане з плачевними результатами команди. Після 11 турів команда займала лише 16-е місце, перебуваючи недалеко від зони вильоту в Сегунду.
23 липня 2016 року шотландський фахівець Девід Моєс був призначений новим головним тренером англійського клубу «Сандерленд». На цій посаді він змінив Сема Еллардайса, який очолив національну збірну Англії. Угода з 53-річним шотландцем розрахована на 4 роки. 13 серпня, в першому ж турі Прем'єр-Ліги команда Девіда Моєса зазнала поразки 1:2 на виїзді від «Манчестер Сіті». Протягом 10 матчів Прем'єр-ліги команда не могла виграти жодного матчу. Безвиграшна серія була перервана перемогою над «Борнмутом» 1:2 в гостях, 5 листопада в рамках 11-го туру Прем'єр-ліги. У Кубку Ліги команда дійшла до 1/8 фіналу. З початок був обіграний «Шрусбері Таун» (1:0), а потім команда під керівництвом 53-річного фахівця перемогла «Квінз Парк Рейнджерс» (1:2). Але в 1/8 фіналу програла в гостях «Саутгемптону» 1:0. Врешті-решт за результататми сезону «Сандерленд» не зберіг місце у Прем'єр-лізі, і тренер, попри готовність продовжити роботу з командою у Чемпіоншипі, був звільнений.
7 листопада 2017 року був запрошений на тренерський місток «Вест Гем Юнайтед», команда якого на той час перебувала у зоні вильоту з найвищого англійського дивізіону. На початку травня 2018 року, за два тури до завершення першості, лондонці забезпечили собі збереження прописки у Прем'єр-лізі. Невдовзі термін піврічної тренерської угоди шотландця з клубом завершився, однак «Вест Гем» не запропонував її подовжити, натомість запросивши на посаду головного тренера чилійця Мануеля Пеллегріні.
За півтора року, у грудні 2019, Моєса знову запросили до «Вест Гем Юнайтед», який перебував у вже знайомій тренеру ситуації — посідав місце у зоні вильоту із Прем'єр-ліги, набравши лише 8 очок у своїх останніх на той момент 13 матчах чемпіонату. Цього разу шотландець погодив із клубом 18-місячний тренерський контракт.