W lutym 1999 roku Weir przeszedł za 250 tysięcy funtów do angielskiego Evertonu. W Premiership swój pierwszy mecz rozegrał 17 lutego przeciwko Middlesbrough F.C. – Everton wygrał w nim 5:0. W zespole „The Toffies” Weir był podstawowym zawodnikiem. W zespole prowadzonym przez kolejnych menedżerów, swoich rodaków, Waltera Smitha oraz Davia Moyesa był kapitanem. W drużynie z Liverpoolu występował do stycznia 2007 roku i w tym okresie rozegrał 235 meczów w Premiership i zdobył 10 goli.
17 stycznia 2007 wrócił do Szkocji i na zasadzie wolnego transferu trafił do Rangers F.C. Z klubem z Glasgow podpisał półroczny kontrakt, a 21 stycznia zadebiutował w jego barwach w wygranym 1:0 wyjazdowym spotkaniu z Dunfermline Athletic F.C. Jego postawa w lidze była na tyle wystarczająca, że kierownictwo Rangersów przedłużyło kontrakt z Davidem o rok, do końca sezonu 2007/2008. W nim Weir dotarł do półfinału Pucharu UEFA. 1 lipca 2010, po swoich 40 urodzinach, podpisał kontrakt obowiązujący przez kolejny sezon.