Le roi Sébastien 1er du Portugal (1557-1578) rêvait de conquérir le Maroc. Aussi, en 1577, quand le prétendant Mohammed el-Moutaoukil vint lui offrir la reconnaissance de la suzeraineté portugaise en échange de son appui militaire, l’impétueux souverain décida d’intervenir.
Le sultan marocain Moulay Abd-el-Malek (1576-1578), cinquième souverain de la dynastie saadienne, tenta de le raisonner, et par tous les moyens, il chercha à lui faire comprendre qu'il n'était dans l'intérêt, ni du Portugal, ni du Maroc, d'ouvrir les hostilités. Il lui proposa même de lui remettre un port marocain de son choix et d'élargir de treize lieues l’hinterland des places que le Portugal conservait encore sur le littoral du Maroc. Rien n'y fit car le souverain portugais qui voulait en découdre, considéra les sages propositions de Moulay Abd-el-Malek comme autant d'aveux de faiblesse.
Tout en tentant de sauver la paix, Moulay Abd-el-Malek prépara donc son armée à la guerre et lorsqu’il se mit en marche vers les troupes portugaises qui venaient de débarquer, c'est à une levée en masse que l'on assista.
Les Portugais qui disposaient de 36 canons alignèrent environ 20 000 hommes dont un peu plus de 1500 cavaliers. A ces effectifs combattants s’ajoutaient environ dix mille domestiques ou personnels de charroi.
Les Marocains ne disposaient que de 20 pièces d'artillerie, mais ils avaient une nette supériorité numérique, entre 40 à 50 000 hommes dont plus de 30 000 cavaliers. L'infériorité portugaise était encore accentuée par la lenteur de la progression due à la lourdeur des convois de ravitaillement, alors que les Marocains qui vivaient dans le pays ne connaissaient pas ce problème.
Accumulant les erreurs, ne tenant aucun compte des avertissements ou des renseignements qui lui étaient donnés par des déserteurs de l'armée marocaine, le 4 août au matin le souverain portugais commit une faute grossière en positionnant ses troupes en un carré massif, dos au fleuve, ce qui, durant la bataille empêcha son aile droite de manœuvrer et lui interdit ensuite toute possibilité de retraite.
Plus mobile, tirant au maximum parti du terrain, Moulay Abd-el-Malek, choisit de disposer ses troupes en une forme de croissant, afin d’opérer une manœuvre de débordement.
La défaite du roi Sébastien fut totale, dix mille morts portugais jonchant le champ de bataille contre deux mille Marocains. Comme seule une centaine de Portugais réussit à s’échapper du champ de bataille et à gagner Tanger, les prisonniers se comptèrent donc par milliers, dont environ 5 à 6000 combattants et au moins 10 000 suivants et domestiques, soit un total d’environ 15 000 captifs. Seuls quelques centaines de cavaliers nobles furent rachetés par leurs familles, la plupart de ces prisonniers étant des domestiques, des palefreniers, des cuisiniers, dans tous les cas des non-combattants. Plusieurs officiers et nombre de soldats devinrent des renégats, et certains occupèrent même ensuite de très hautes fonctions tant militaires qu’administratives au sein du Makhzen.
Les trois rois qui s'affrontèrent dans cette bataille, connue également de ce fait sous le nom de «Bataille des Trois Rois» (ou bataille d'Al Ksar el-Kebir), y trouvèrent tous trois la mort. Sébastien et Mohammed el-Moutaoukil se noyèrent dans l'oued el Makhazen en tentant de fuir, tandis que Moulay Abd-el-Malek mourut au début de la bataille d’une intoxication alimentaire. Sa mort fut d'ailleurs cachée à ses troupes. Quand ils reconnurent le cadavre de Mohammed el-Moutaoukil, les Marocains l'écorchèrent, d'où le nom d'el-Mesloukh (l’écorché) qui lui est resté dans l'histoire. Sa sanglante dépouille fut bourrée de paille et exhibée dans les principales villes du Maroc.
Le soir de la bataille, sur le lieu de la victoire marocaine, un frère du sultan défunt fut proclamé sous le nom d'Ahmed El-Mansour (le Victorieux) qui régna de 1578 à 1603.