È entrato nell'NBA nel 2003 quando ha affrontato la stagione con i Los Angeles Clippers, senza grande fortuna. L'anno successivo è passato con i Sacramento Kings, senza però convincere appieno.
Nella stagione 2005-06 ha militato in due squadre: dapprima i New York Knicks e poi a Philadelphia 76ers. In quella stagione si fa notare soprattutto come ottimo difensore.
Al via della stagione 2006-07 i Golden State Warriors gli offrono un contratto annuale: lui li ricompensa con una grande stagione, compreso un incontro da 36 punti, e con i Playoff raggiunti dai californiani dopo 13 anni.
Dopo una seconda stagione coi Golden State Warriors dove riceve i gradi cocapitano, ma vede ridursi il suo minutaggio, lascia la franchigia di Oakland per trasferirsi ai Phoenix Suns. Diventato free agent, nell'estate 2009 firma un contratto biennale con gli Orlando Magic.
Il 22 luglio 2010 firma un contratto biennale con i Los Angeles Lakers. Alla scadenza i Lakers non gli rinnovano il contratto e Matt decide di rimanere a Los Angeles ma in maglia Clippers: il 14 settembre 2012 firma con contratto annuale a 1,4 milioni di dollari. Barnes torna così in quella che era stata la sua prima squadra NBA. Il 16 giugno i Clippers lo scambiano con Spencer Hawes per avere Lance Stephenson, un giocatore dei Charlotte Hornets. Ha vinto l'anello nel 2016-2017 in cinque gare contro i Cleveland Cavaliers.