Pada usia 16 tahun, ayah dan agen Castillo menerima tawaran dari klub Yunani, Olympiacos. Tiga tahun setelah bergabung dengan Olympiacos, Castillo menjadi pemain reguler di kompetisi domestik dan Eropa. Ia menjadi favorit para suporter klub dan diberikan nomor punggung 7 sebagai penghargaan kepada mereka. Castillo menjadi bagian dari skuad Olympiacos yang memenangkan tiga gelar juara liga berturut-turut. Ia juga menjadi pencetak gol terbanyak klub selama fase persiapan musim 2006-2007, dengan mencetak tujuh gol dalam pertandingan persahabatan. Castillo berhasil mencetak tiga gol dalam lima pertandingan Liga Champions dan berada di posisi kedua setelah Rivaldo dalam hal jumlah gol dan assist untuk klub.
Pada awal 2006, ayah dan agennya mulai bernegosiasi dengan klub Meksiko, Guadalajara, namun pembicaraan dihentikan karena Olympiacos tidak tertarik untuk menjual pemain tersebut pada saat itu. Kemudian, pada tahun 2007, Olympiacos menerima tawaran €20 juta dari klub Ukraina, Shakhtar Donetsk, untuk jasa Castillo. Sebelum kepindahannya, Castillo mencetak gol melalui tendangan bebas dalam pertandingan terakhirnya untuk Olympiacos setelah "mencuri" tendangan tersebut dari rekan setimnya yang bersiap untuk mengambilnya.
Pada tanggal 31 Juli 2007, Castillo resmi bergabung dengan klub Ukraina, Shakhtar Donetsk, dengan kontrak lima tahun dan biaya transfer sebesar €20 juta. Hal ini menjadikannya transfer termahal bagi klub Ukraina hingga saat ini. Castillo mencetak gol pertamanya untuk Shakhtar saat melawan SV Salzburg dalam Liga Champions. Namun, dalam pertandingan liga melawan FC Naftovyk-Ukrnafta Okhtyrka, saat Shakhtar mendapatkan penalti, Castillo menolak memberikan bola kepada eksekutor penalti yang ditunjuk, Cristiano Lucarelli, dan mengambil penalti sendiri yang kemudian digagalkan oleh kiper lawan. Castillo langsung digantikan dalam pertandingan tersebut. Pelatih Mircea Lucescu mengomentari, "Apa yang dilakukan Castillo, dari sudut pandang profesional, saya belum pernah melihat hal seperti itu sebelumnya dalam hidup saya. Tindakan akan diambil terhadap Castillo."
Pada tanggal 18 Desember 2007, diumumkan bahwa Castillo telah menandatangani kontrak pinjaman selama satu tahun dengan Manchester City, mulai tanggal 1 Januari 2008. Kabarnya, Castillo sangat ingin melakukan kepindahan ini dan bahkan membayar separuh biaya pinjaman tersebut. Sven-Göran Eriksson mengomentari, "Dia sangat ingin bergabung dengan kami, sangat ingin datang ke Inggris, sangat ingin bermain di Premier League", dan mengatakan bahwa ia belum pernah melihat seorang pemain membayar separuh biaya transfernya sendiri sebelumnya. Castillo melakukan debutnya untuk Manchester City pada tanggal 5 Januari 2008 dalam pertandingan putaran ketiga Piala FA melawan West Ham United. Namun, dalam pertandingan ulangan pada tanggal 16 Januari 2008, saat pertandingan pertamanya di kandang klub, ia harus ditarik keluar lapangan setelah 32 menit akibat cedera bahu. Castillo tampil dalam sembilan pertandingan sepanjang musim tersebut, tujuh di antaranya dalam Liga Premier. Gagal mendapatkan tempat di Manchester City, Castillo kembali ke Shakhtar Donetsk setelah berakhirnya masa peminjamannya pada Januari 2009.
Setelah Shakhtar Donetsk tidak menyertakan Castillo dalam skuad bahkan di bangku cadangan untuk dua pertandingan awal musim 2009/2010, ia dipinjamkan ke rival liga Ukraina, Dnipro Dnipropetrovsk.