Dopo aver esordito tra i professionisti con il , nel 2014 si è trasferito alla , con cui ha vinto una Supercoppa italiana (2017). Nel 2018 viene acquistato dall'Inter, con cui ha vinto tre campionati italiani (2020-2021, 2023-2024 e 2025-2026), tre Coppe Italia (2021-2022, 2022-2023 e 2025-2026) e tre Supercoppe italiane (2021, 2022 e 2023), oltre ad aver raggiunto una finale di UEFA Europa League (2019-2020) e due di UEFA Champions League (2022-2023 e 2024-2025).

Con la nazionale olandese, con cui ha debuttato nel 2012, ha partecipato a due edizioni del campionato mondiale (2014 e 2022) e del campionato europeo (2020 e 2024), oltre ad aver raggiunto una finale di UEFA Nations League (2018-2019).

A livello individuale è stato premiato come miglior difensore della Serie A nel 2019-2020, ed è stato inserito due volte nella squadra dell'anno AIC (2020 e 2021) e una nella squadra della stagione della UEFA Europa League (2019-2020).

Biografia Appassionato di pianoforte, che ha studiato da autodidatta, nel luglio 2021 ha debuttato con il suo primo singolo Hey Brother in collaborazione con la band italiana Keemosabe. Nel maggio dello stesso anno, sul palco del Teatro comunale di Nardò, dove si trovava per le vacanze, aveva suonato il pianoforte accompagnato dal violoncello di Redi Hasa. Nell'aprile 2024 è stata pubblicata la versione unplugged di Noi siamo l'Inter, canzone incisa nel 2021 in occasione della vittoria dello scudetto e rivisitata per la conquista della seconda stella, con De Vrij al pianoforte ad affiancare Eddy Veerus.

Dalla relazione con Doina Turcanu, il 28 marzo 2023 è nato Nolan.

Caratteristiche tecniche Di ruolo difensore centrale, sa adattarsi sia alla difesa a 3 che a 4; in quest'ultima può essere schierato sia a destra che a sinistra. Dotato di ottima personalità e leadership, che gli consente di rimanere lucido quando ha il pallone tra i piedi, dispone di ottima visione di gioco, che gli consente di avviare l'azione dal basso, ed è abile nei lanci lunghi e nelle verticalizzazioni. De Vrij è bravo anche in marcatura, nell'intercettare palloni grazie alla sua capacità di leggere in anticipo le azioni avversarie, nell'intervenire in tackle e nei contrasti. Sa anche essere pericoloso sui colpi di testa, specialmente in fase offensiva.

Carriera Club Primi anni De Vrij comincia a giocare a calcio nei dilettanti del VV Spirit, dove gioca per 5 stagioni. All'età di 10 anni prende parte al giorno del talento del , dopo varie sessioni di allenamento e un'amichevole contro l'ARC, i dirigenti del Feyenoord decidono di chiedergli di aderire al settore giovanile del Feyenoord, club di cui è tifoso sin da piccolo. Mentre al VV Spirit aveva giocato spesso come centrocampista centrale al Feyenoord diventa difensore. La sua crescita è ottima e dopo aver giocato per la squadra U-15 passa direttamente a quella U-17, saltando l'U-16.

Feyenoord

Il 17 luglio 2009, De Vrij firma il suo primo contratto da professionista con il Feyenoord, valido fino all'estate del 2012. Il 24 settembre 2009 fa il suo esordio con la prima squadra del Feyenoord, nella partita di KNVB beker contro l'Harkemase Boys, entrando al minuto 58 al posto di Leerdam (la partita finisce 5-0 per il Feyenoord). Il 6 dicembre 2009 fa il suo esordio in Eredivisie, sostituendo Landzaat al minuto 89 del match casalingo contro il , finito 3-1 per il Feyenoord. Segna la sua prima rete, da professionista, il 2 maggio 2010 in occasione della vittoria per 6-2 contro l'.Feyenoord 6 - 2 Heerenveen soccerway.com Il 6 maggio successivo perde la finale, per l'assegnazione della Coppa d'Olanda, per 4-1 contro l'.

Il 19 agosto 2010 fa il suo esordio, in campo internazionale, in occasione della partita di qualificazione per la UEFA Europa League vinta per 1-0 contro il . Nella stagione 2011-2012 arriva secondo in campionato dietro l'Ajax.

Nel 2012-2013 diventa il nuovo capitano del club. Il 31 luglio 2012 disputa la sua prima partita in Champions League in occasione della sconfitta per 1-2 ai preliminari contro la .

Il 21 aprile 2013, in occasione di Feyenoord- vinta per 2-0, tocca quota 100 presenze in Eredivisie e tutte collezionate con la maglia del Feyenoord. Il 18 maggio 2014 arriva, per la seconda volta in carriera, secondo in campionato dietro l'Ajax. Dopo un ottimo campionato mondiale, decide di lasciare il Feyenoord, con il quale ha totalizzato 154 presenze e 7 reti.

Lazio

Il 30 luglio 2014, la ufficializza l'acquisto del difensore olandese per una cifra vicina agli 8,5 milioni di euro. Esordisce il 24 agosto 2014 in occasione della partita di Coppa Italia, vinta per 7-0, contro il , dove ha l'occasione di segnare anche la sua prima rete con la nuova maglia. Il 31 agosto successivo fa il suo esordio anche nel campionato italiano nella sconfitta esterna, per 1-3, contro il . Il 20 maggio 2015 perde la finale di Coppa Italia, dove la Lazio viene battuta dalla per 1-2.

L'8 agosto 2015 gioca da titolare la Supercoppa italiana, persa per 0-2 contro i campioni d'Italia della Juventus. Dopo essersi infortunato in nazionale, il 4 novembre si sottopone a un «intervento di microfratture del condilo femorale laterale e meniscectomia selettiva laterale in artroscopia del ginocchio sinistro» che lo tiene lontano dai campi di gioco per il resto della stagione.

Il 21 agosto 2016 fa il suo ritorno in campo dopo il lungo infortunio (350 giorni) in occasione della trasferta vinta, per 4-3, contro l'. L'11 settembre successivo mette a segno la sua prima rete in Serie A, in occasione della trasferta pareggiata, per 1-1, contro il . Il 17 maggio 2017 perde la sua seconda finale di Coppa Italia, con la sua squadra che viene superata per 2-0 dalla Juventus.

Il 13 agosto 2017 vince il suo primo titolo in maglia biancoceleste, con la Lazio che si impone per 3-2 sulla Juventus, nella partita valida per l'assegnazione della Supercoppa italiana. Il 19 febbraio 2018 disputa la sua centesima partita con indosso la maglia della Lazio, in occasione della vittoria interna, per 2-0, contro il . Il 15 marzo successivo mette a segno il suo primo gol in campo internazionale, in occasione della trasferta vinta, per 2-0, contro gli ucraini della negli ottavi di Europa League. Il 20 maggio 2018 disputa la sua ultima partita in maglia biancoceleste, in occasione della sconfitta casalinga, per 2-3, contro l', partita in cui provoca il rigore del pareggio prima del gol di Vecino che sancirà la qualificazione alla Champions League dei nerazzurri, sua futura squadra dopo non aver trovato il rinnovo con la Lazio.

Inter

Il 2 luglio 2018 viene ufficializzato il suo trasferimento all' a parametro zero. Diviene sin da subito un titolare del club nerazzurro, con cui esordisce il 19 agosto seguente, nel match contro il , mentre sigla la sua prima rete il 26 agosto, alla seconda giornata di campionato, contro il . il 18 settembre esordisce in Champions League con la nuova maglia nel match contro il , fornendo un'ottima prestazione e servendo l'assist per il gol di Vecino per il definitivo 2-1. Il 17 marzo 2019 va nuovamente a segno nel derby vinto per 3-2 contro il , segnando il secondo gol dei nerazzurri su assist di Politano.

L'anno successivo viene confermato come titolare nella difesa a 3 di Antonio Conte. Dopo aver segnato nel 3-0 inflitto al , il 9 febbraio 2020 completa la rimonta dei nerazzurri nel derby, segnando il momentaneo 3-2 di testa su calcio d’angolo (la partita terminerà 4-2 per l'Inter). Al termine della stagione, in cui va a segno anche nelle trasferte contro e , viene eletto come il miglior difensore del campionato.

Nella stagione 2020-2021 si conferma come uno dei titolari della squadra e vince il campionato italiano da protagonista, collezionando 32 presenze nel torneo. Inoltre, l'apporto fornito dal trio difensivo, composto anche dai colleghi Milan Škriniar e Alessandro Bastoni – noto come SDB –, oltre a dimostrarsi determinante per la conquista dello scudetto, permette alla squadra nerazzurra di chiudere il torneo con il minor numero di reti incassate (35).

Il 19 ottobre 2021, in occasione della terza giornata di Champions League contro lo , sigla il suo primo gol nella competizione, contribuendo al successo nerazzurro per 3-1. Il 12 gennaio 2022 vince il suo secondo trofeo con l'Inter, la Supercoppa italiana, battendo per 2-1 la dopo i tempi supplementari. Nel corso della stagione si aggiudica anche la Coppa Italia, sempre contro la Juventus, con il risultato di 4-2 dopo tempi supplementari. In campionato, invece, i nerazzurri terminano al secondo posto e non riescono a riconfermarsi, con De Vrij che è stato protagonista in negativo nei due derby contro il .

Nella stagione successiva, a seguito di un rendimento sotto le aspettative, finisce per essere superato nelle gerarchie della squadra dal nuovo acquisto ed ex compagno alla Lazio Francesco Acerbi. Il 7 aprile 2023 indossa per la prima volta la fascia da capitano nella gara contro la , viste le assenze nella formazione titolare di Samir Handanovič, Danilo D'Ambrosio, Marcelo Brozović e Lautaro Martínez. L'annata gli permette di vincere altri due trofei, la Supercoppa italiana, battendo il per 3-0, e la Coppa Italia, superando per 2-1 la , mentre in Serie A l'Inter chiude terza. Inoltre, raggiunge la prima finale di Champions League, persa per 1-0 contro il , pur non disputando l'atto conclusivo del torneo. Nell'arco della stagione ha realizzato una sola rete nel successo per 3-0 contro la in Serie A.

L'8 luglio 2023 viene annunciato il suo rinnovo fino al 2025 con i nerazzurri. Il 29 novembre indossa per la prima volta la fascia da capitano dell'Inter in Champions League, in occasione della partita pareggiata per 3-3 contro il , viste le assenze di Lautaro Martínez e Nicolò Barella nella formazione titolare. Nel corso della stagione, seppur da comprimario, fornisce grazie a un buon rendimento il proprio contributo al raggiungimento dello scudetto da parte dei nerazzurri. Durante l'anno ha realizzato un gol nel successo per 0-4 in casa del in campionato.

Nel corso della stagione 2024-2025 dimostra nuovamente di potersi alternare con efficacia ad Acerbi, alle prese con qualche problema fisico. Il 23 novembre 2024 realizza un goal nella vittoria imponente in trasferta per 0-5 contro il Verona. Il 2 febbraio 2025 torna decisivo in zona offensiva, con il goal dell'1-1 nel derby contro il Milan. Segna la sua ultima rete stagionale nel successo per 0-2 in casa del , in cui ha anche indossato la fascia da capitano, non riuscendo tuttavia a portare la sua squadra alla vittoria dello scudetto. In Champions League invece i nerazzurri perdono nuovamente una finale, questa volta per 5-0 contro il ; così come nell'ultima occasione De Vrij è rimasto in panchina.

Nella sua ottava stagione a Milano, la 2025-2026, si riconferma nelle rotazioni dei nerazzurri con 20 presenze in tutte le competizioni e la vittoria del double nazionale con la sua terza Serie A e Coppa Italia con la maglia dell'Inter. Il 30 giugno 2026, De Vrij lascia l'Inter dopo 9 trofei totali (3 campionati, 3 Coppe Italia e 3 Supercoppe), 296 presenze e 13 reti in otto stagioni.

Panathinaikos Lo stesso giorno del suo addio sigla un contratto biennale con i greci del . Il debutto con la nuova maglia arriva nei preliminari di Conference League quando indossa anche la fascia da capitano.

Nazionale Nazionali giovanili La crescita di De Vrij al Feyenoord non passa inosservata e il difensore riceve rapidamente la prima convocazione nelle nazionali giovanili. Il 21 novembre 2007 gioca per la prima volta da titolare con la nazionale olandese Under-16, nella partita vinta 1-0 contro l'.