W zimowym okienku transferowym w sezonie 1999/2000 José Mari przeniósł się do Włoch, gdzie podpisał kontrakt z AC Milan. W zespole „Rossonerich” Hiszpan pełnił rolę rezerwowego, jednak regularnie dostawał szanse gry. Na San Siro José Mari jednak zawiódł - przez trzy sezony rozegrał 52 pojedynki w Serie A, w których zaledwie pięć razy wpisał się na listę strzelców. W czasie rozgrywek 2002/2003 hiszpański piłkarz przebywał na wypożyczeniu w Atlético Madryt.

Po zakończeniu sezonu trafił do Villarrealu. W debiutanckim sezonie w ekipie „Żółtych Łodzi Podwodnych” dotarł do półfinału Puchar UEFA. W kolejnych rozgrywkach Villarreal zajęło trzecie miejsce w Primera División, a w Pucharze UEFA odpadło w ćwierćfinale. W sezonie 2005/2006 José Mari wraz z Villarrealem niespodziewanie dotarł do 1/2 finału Ligi Mistrzów, gdzie hiszpański klub przegrał 1:0 z Arsenalem Londyn. Po tym, jak do drużyny został sprowadzony Giuseppe Rossi, a Nihat Kahveci powrócił do zdrowia po kontuzji, działacze Villarrealu postanowili sprzedać José Mariego do Realu Betis. W nowym klubie hiszpański napastnik pełnił jednak rolę zmiennika. W wyjściowej jedenastce o wiele częściej grali bowiem Edu, Mariano Pavone i Rafael Sóbis.