În 998, Samuel a lansat o campanie majoră împotriva Duklja pentru a preveni o alianță între Prințul Jovan Vladimir și bizantini. Când trupele bulgare au ajuns la Duklja, prințul sârb și poporul său s-au retras în munți. Samuel a lăsat o parte din armată la poalele munților și i-a condus pe soldații rămași să asedieze cetatea de coastă Ulcinj. În efortul de a preveni vărsarea de sânge, i-a cerut lui Jovan Vladimir să se predea. După ce prințul a refuzat, unii nobili sârbi și-au oferit serviciile bulgarilor și, când a devenit clar că rezistența ulterioară a fost inutilă, sârbii s-au predat. Jovan Vladimir a fost exilat la palatele lui Samuel din Prespa.
Trupele bulgare au trecut prin Dalmația, preluând controlul Kotorului și călătorind spre Dubrovnik. Deși nu au reușit să cuprindă Dubrovnik, au devastat satele din jur. Armata bulgară a atacat apoi Croația în sprijinul prinților rebeli Kreșimir al III-lea și Gojslav și a înaintat nord-vest până la Split, Trogir și Zadar, apoi la nord-est prin Bosnia și Raška și s-a întors în Bulgaria . Acest război croato-bulgar ia permis lui Samuel să instaleze monarhi vasali în Croația.
Ruda lui Samuel, Kosara, s-a îndrăgostit de captivul Jovan Vladimir. Cuplul s-a căsătorit după ce a obținut aprobarea lui Samuel, iar Jovan s-a întors pe pământurile sale ca funcționar bulgar împreună cu unchiul său Dragomir, în care Samuel avea încredere. Între timp, prințesa Miroslava s-a îndrăgostit de nobilul captiv bizantin Ashot, fiul lui Gregorios Taronites, guvernatorul decedat al Salonicului, și a amenințat că se va sinucide dacă nu i se permite să se căsătorească cu el. Samuel a cedat și l-a numit pe Ashot guvernator al Dyrrhachiumului. De asemenea, Samuel a pecetluit o alianță cu maghiarii când fiul și moștenitorul său cel mare, Gavril Radomir, s-a căsătorit cu fiica marelui prinț al Ungariei Géza.