Ο Σαμουήλ μετά την ήττα του στον Σπερχειό, συνέχισε τις κατακτητικές του δραστηριότητες. Στράφηκε προς τα δυτικά και κατά το έτος 998 κατέλαβε το Δυρράχιο, τη Διόκλεια και τη Ρασκία. Από την άλλη πλευρά τα βυζαντινά στρατεύματα κατελάμβαναν τη ανατολική Βουλγαρία. Εν τω μεταξύ ο Βασίλειος Β’ προτού να ξεκινήσει για τη δεύτερη εκστρατεία του στη Συρία, κατά το έτος 998 ή στις αρχές του 999, επιχείρησε την τρίτη εκστρατεία κατά των Βουλγάρων. Αφού έφθασε την Φιλιππούπολη, προχώρησε προς τα ενδότερα της Βουλγαρίας και έφθασε μέχρι την περιοχή της Τριαδίτζας (σημερινή Σόφια) και κατέλαβε πολλά φρούρια.
Ο Βασίλειος Β’ μετά την θριαμβευτική του εκστρατεία στη Συρία και στην Ιβηρία επανήλθε στο μέτωπο της Βαλκανικής, όπου αποκατέστησε το Μακεδονικό σύνορο ανακαταλαμβάνοντας τη Βέροια και τα Σέρβια. Έπειτα προχώρησε μέχρι τη Θεσσαλία, όπου αποκατέστησε τη βυζαντινή κυριαρχία ξαναχτίζοντας φρούρια που είχε καταστρέψει ο Σαμουήλ ή κυριεύοντας άλλα τα οποία κατείχαν ακόμη οι Βούλγαροι. Στη συνέχεια, ο αυτοκράτορας επέστρεψε στη Μακεδονία και μετά από πεισματώδη πολιορκία, κατέλαβε τα Βοδενά (σημερινή Έδεσσα).
Το έτος 1002 ο Βασίλειος Β’ στράφηκε προς τις παραδουνάβιες περιοχές όπου μετά από οκτάμηνη πολιορκία κατέλαβε τη Βιδύνη που ήταν σπουδαίο παραδουνάβιο κάστρο. Ο Σαμουήλ επιχειρώντας αντιπερισπασμό κατέλαβε και λεηλάτησε την Αδριανούπολη κατά την ημέρα της εορτής της Κοιμήσεως της Θεοτόκου (15 Αυγούστου 1002). Από τη Βιδύνη ο Βασίλειος κινήθηκε προς τα νότια με ταχύτατες κινήσεις.
Στην κοιλάδα του Αξιού, κατήγαγε περιφανή νίκη κατά του Σαμουήλ και τον έτρεφε σε άτακτη φυγή. Στη συνέχεια τα βυζαντινά στρατεύματα πολιόρκησαν χωρίς επιτυχία το φρούριο Πέρνικο στο βόρειο Στρυμόνα. Το έτος 1005 ο Ασώτιος ο Ταρωνίτης, ο οποίος είχε συλληφθεί αιχμάλωτος από τον Σαμουήλ και είχε νυμφευθεί την κόρη του Βούλγαρου ηγεμόνα, παρέδωσε το Δυρράχιο στον αυτοκρατορικό στρατό, ύστερα από προδοσία. Με την κατάληψη των Σκοπίων και των Βοδενών οι κεντρικές περιοχές του κράτους του Σαμουήλ αποκλείστηκαν. Μετά από ασταμάτητο τετράχρονο πόλεμο οι Βούλγαροι έχασαν τα περισσότερα από τα μισά εδάφη τους. Με τις νίκες αυτές ο Βασίλειος πέτυχε να αποκαταστήσει τα βυζαντινά σύνορα της Χερσονήσου του Αίμου τα σημεία που τα είχε φέρει ο Ιωάννης Τσιμισκής.
Το κράτος του Σαμουήλ είχε απομονωθεί γεωγραφικά από τους βόρειους γείτονές του και ειδικότερα από τους Πατσινάκες που κατοικούσαν σε περιοχές βόρεια του Δούναβη. Τώρα ο πόλεμος είχε μεταφερθεί στο εσωτερικό του βουλγαρικού κράτους. Ήταν φανερό ότι η οικονομική, οργανωτική και τεχνική υπεροχή του Βυζαντίου θα κυριαρχούσε. Ο Σαμουήλ μετά το 1004 βρέθηκε περικυκλωμένος. Δεν μπορούσε να αντιμετωπίσει τους Βυζαντινούς σε κανονική μάχη και απέφευγε κάθε αναμέτρηση.
Ο αυτοκράτορας ήταν αποφασισμένος να καθυποτάξει τη Βουλγαρία και γι’ αυτό επί δέκα χρόνια εισέβαλε στις βουλγαρικές περιοχές και κατέστρεφε τα πάντα στο πέρασμα του. Τα αποτελέσματα αυτών των εκστρατειών, όμως, ήταν πενιχρά για τον Βασίλειο, υπό την έννοια ότι δεν μπορούσε να κάμψει τελείως τη βουλγαρική δύναμη. Κατόρθωσε, όμως, να φθείρει συνεχώς τον αντίπαλό του, του οποίου η δύναμη συνεχώς μειωνόταν.
Τώρα πλέον δεν τολμούσε ο Σαμουήλ να αναμετρηθεί σε ανοιχτή μάχη με τα αυτοκρατορικά στρατεύματα. Βρέθηκε σε δύσκολη θέση. Βλέποντας ότι του ήταν αδύνατο να τους Βυζαντινούς σε ανοιχτό πεδίο για να σταματήσει τις εισβολές του, κατέλαβε τις ορεινές διόδους από τις οποίες θα περνούσε ο βυζαντινός στρατός για να μπει στα βουλγαρικά εδάφη. Μία από τις κυριότερες διόδους ήταν τα στενά του Κλειδίου ή Κιμβαλόγγου, τα οποία βρίσκονταν στην κοιλάδα του Στρυμόνα, μεταξύ Σερρών και Μελένικου. Το στενό αυτό οχύρωσε ο Σαμουήλ και περίμενε τη διέλευση του Βασιλείου.
Το καλοκαίρι του 1014 ο αυτοκρατορικός στρατός έφθασε μπροστά στις βουλγαρικές οχυρώσεις τις οποίες επιχείρησε να καταλάβει, όμως, η στενότητα του εδάφους και η σθεναρή αντίσταση των Βουλγάρων ματαίωσε τους σκοπούς του αυτοκράτορα, ο οποίος βρέθηκε προς στιγμήν σε αμηχανία. Από τη δύσκολη θέση έβγαλε τους Βυζαντινούς ο στρατηγός Νικηφόρος Ξιφίας, ο οποίος κατόρθωσε να καταλάβει το υψηλό όρος Βαλαθίστα ή Βελασίτζα, το οποίο βρίσκεται ανατολικά του Κλειδίου. Έτσι τα βουλγαρικά στρατεύματα, αφού κυκλώθηκαν και χτυπήθηκαν από τα νώτα, έπαθαν φοβερή πανωλεθρία. Πολλοί Βούλγαροι στρατιώτες έπεσαν στο πεδίο της μάχης, ενώ ακόμη περισσότεροι αιχμαλωτίστηκαν. Οι πηγές κάνουν λόγο για 14.000 ή 15.000 αιχμαλώτους. Πρόκειται για πολύ μεγάλο αριθμό αιχμαλώτων που δείχνει ακριβώς τη θριαμβευτική νίκη των Βυζαντινών.
Η μάχη του Κλειδίου έκρινε την τύχη του πολέμου μεταξύ Βυζαντινών και Βουλγάρων. Μετά τη μάχη του Κλειδίου ο Βασίλειος τιμωρώντας τους Βούλγαρους αιχμαλώτους διέταξε να τους τυφλώσουν, αφού προηγουμένως τους χώρισε σε ομάδες εκ των οποίων κάθε μία περιελάμβανε 100 στρατιώτες. Άφησε σε κάθε ομάδα έναν μονόφθαλμο για να μπορέσει να οδηγήσει τους υπόλοιπους στη Βουλγαρία. Πρόκειται αναμφισβήτητα για πολύ σκληρή τιμωρία, η οποία αυτή καθεαυτή υπήρξε οπωσδήποτε βάρβαρη πράξη. Ο Σαμουήλ όταν είδε τους κατακρεουργημένους στρατιώτες του έπαθε αποπληξία και σε δύο μέρες πέθανε.
Η τύφλωση των Βουλγάρων αιχμαλώτων ερμηνεύτηκε ποικιλοτρόπως από παλαιότερους και νεότερους ερευνητές. Μερικοί είδαν την πράξη του Βασιλείου μέσα από το πρίσμα μιας γενικότερης προκατάληψης για το Βυζάντιο και τον πολιτισμό του. Υπήρξε κατά την άποψη τους σύμπτωμα της βαρβαρότητας των ηθών που επικρατούσαν στο Βυζάντιο. Άλλοι την είδαν ως πράξη πολιτικής σκοπιμότητας. Άλλοι έδωσαν κοινωνιολογικές διαστάσεις.
Ίσως η πλέον επιτυχής ερμηνεία να είναι αυτή που έδωσε ο καθηγητής Διονύσιος Ζακυθηνός: «Αλλά την πύρωσιν των Βουλγάρων του Κλειδίου θα ηδυνάμεθα να ερμηνεύσομεν από της απόψεως του εσωτερικού και διεθνούς Δικαίου. Ο αυτοκράτωρ, λαμβάνων τα αποδιδόμενα εις αυτόν σκληρά μέτρα, δεν ενήργησε ως αντίπαλος εκπροσώπου εμπολέμου κράτους και δεν ετιμώρησε πολίτας εμπολέμου επικρατείας, αλλ’ως κυρίαρχος καταπνίγων εσωτερικήν επανάστασιν και κολάζων τους ιδίους υπηκόους, οίτινες ήγειραν τα όπλα εναντίον της ανωτάτης αυτών αρχής. Ο Σαμουήλ δεν ήτο Βούλγαρος, αλλά υιός Βυζαντινού διοικητού, τούτο δε παρείχεν εις τον αυτοκράτορα το δικαίωμα να θεωρήσει τον πόλεμον ως στάσιν και ανταρσίαν και εσχάτην προδοσίαν και να μεταχειριστεί τους αιχμαλώτους ουχί ως εμπολέμους αλλ’ ως στασιαστάς επομένως να μην συμμορφωθεί προς το Διεθνές Δίκαιο και την διεθνή πρακτικήν, αλλά να κινήσει το εσωτερικόν Δίκαιον. Κατά τούτο οι ένοχοι στάσεως ετιμωρούντο διά τυφλώσεως. Αι πηγαί θεωρούν την πύρωσιν, επιβαλλομένην αντί της εσχάτης των ποινών επί στασιαζόντων, ως πράξιν φιλανθρωπίας».
Ο πόλεμος Βυζαντινών και Βουλγάρων συνεχίστηκε μέχρι το 1019. Με την κατάληψη του Σίρμιου από τον στρατηγό Κωνσταντίνο Διογένη συμπληρώθηκε η εδαφική επέκταση του Βυζαντίου στη Χερσόνησο του Αίμου. Η Σερβία, η οποία είχε προηγουμένως καταληφθεί από τους Βούλγαρους, τώρα υποτάχθηκε στο Βυζάντιο. Οι ηγεμόνες της Κροατίας ανεγνώρισαν την επικυριαρχία του Βυζαντίου και έλαβαν βυζαντινά αξιώματα. Μετά από όλα αυτά η Χερσόνησος του Αίμου βρισκόταν ολόκληρη και πάλι κάτω από το βυζαντινό σκήπτρο, για πρώτη φορά ύστερα από την σλαβική εγκατάσταση του 7ου μ.Χ. αιώνα. Από την εποχή του Ιουστινιανού κανένας αυτοκράτορας δεν έφθασε σε τόσο μεγάλο βαθμό δύναμης στη Χερσόνησο του Αίμου.