La bataille de Zacatecas a été l'un des principaux engagements de la révolution mexicaine. Après avoir mis Francisco Madero au pouvoir et ordonné son exécution, le général Victoriano Huerta avait pris la présidence. Cependant, sa maîtrise du pouvoir était faible, car les autres acteurs majeurs - Pancho Villa, Emiliano Zapata, Alvaro Obregón et Venustiano Carranza - étaient alliés contre lui. Cependant, Huerta commandait l'armée fédérale relativement bien entraînée et équipée et s'il pouvait isoler ses ennemis, il pourrait les écraser un par un. En juin 1914, il envoya une force massive pour tenir la ville de Zacatecas de l'avancée implacable de Pancho Villa et de sa légendaire division du Nord, qui était probablement l'armée la plus redoutable de ceux qui se dressaient contre lui. La victoire décisive de Villa à Zacatecas a dévasté l'armée fédérale et a marqué le début de la fin pour Huerta.
Le président Huerta combattait les rebelles sur plusieurs fronts, dont le plus grave était le nord, où la division du Nord de Pancho Villa acheminait les forces fédérales où qu'elles se trouvent. Huerta a ordonné au général Luís Medina Barrón, l'un de ses meilleurs tacticiens, de renforcer les forces fédérales dans la ville stratégiquement située de Zacatecas. La vieille ville minière abritait une jonction ferroviaire qui, si elle était capturée, pourrait permettre aux rebelles d'utiliser le chemin de fer pour amener leurs forces à Mexico.
Pendant ce temps, les rebelles se querellaient entre eux. Venustiano Carranza, autoproclamé premier chef de la révolution, était mécontent du succès et de la popularité de Villa. Lorsque la route vers Zacatecas était ouverte, Carranza a plutôt ordonné Villa à Coahuila, qu'il a rapidement maîtrisé. Pendant ce temps, Carranza a envoyé le général Panfilo Natera pour prendre Zacatecas. Natera a lamentablement échoué et Carranza a été prise dans une impasse. La seule force capable de prendre Zacatecas était la célèbre Division du Nord de Villa, mais Carranza était réticent à donner à Villa une autre victoire ainsi que le contrôle de la route vers Mexico. Carranza a calé, et finalement, Villa a décidé de prendre la ville de toute façon: il en avait assez de recevoir des ordres de Carranza en tout cas.
L'armée fédérale a été creusée à Zacatecas. Les estimations de la taille de la force fédérale varient de 7 000 à 15 000, mais la plupart la situent autour de 12 000. Il y a deux collines surplombant Zacatecas: El Bufo et El Grillo et Medina Barrón avaient placé plusieurs de ses meilleurs hommes sur eux. Le feu flétri de ces deux collines avait condamné l'attaque de Natera, et Medina Barrón était convaincue que la même stratégie fonctionnerait contre Villa. Il y avait également une ligne de défense entre les deux collines. Les forces fédérales en attente de Villa étaient des vétérans des campagnes précédentes ainsi que des habitants du Nord fidèles à Pascual Orozco, qui avaient combattu aux côtés de Villa contre les forces de Porfirio Díaz au début de la Révolution. De plus petites collines, y compris Loreto et el Sierpe, ont également été fortifiées.
Villa déplaça la Division du Nord, qui comptait plus de 20 000 soldats, à la périphérie de Zacatecas. Villa avait Felipe Angeles, son meilleur général et l'un des tacticiens supérieurs de l'histoire mexicaine, avec lui pour la bataille. Ils ont conféré et décidé de mettre en place l'artillerie de Villa pour bombarder les collines en prélude à l'attaque. La Division du Nord avait acquis une formidable artillerie auprès de marchands aux États-Unis. Pour cette bataille, décida Villa, il laisserait sa célèbre cavalerie en réserve.
Après deux jours d'escarmouche, les artilleurs de Villa ont commencé à bombarder les collines d'El Bufo Sierpe, Loreto et El Grillo vers 10 heures du matin le 23 juin 1914. Villa et Angeles ont envoyé de l'infanterie d'élite pour capturer La Bufa et El Grillo. À El Grillo, l'artillerie battait si fort la colline que les défenseurs ne pouvaient pas voir les forces de choc approchant, et elle est tombée vers 13 heures. La Bufa n'est pas tombée aussi facilement: le fait que le général Medina Barrón y ait lui-même conduit les soldats a sans aucun doute durci leur résistance. Pourtant, une fois El Grillo tombé, le moral des troupes fédérales a chuté. Ils avaient pensé que leur position à Zacatecas était inattaquable et leur victoire facile contre Natera avait renforcé cette impression.
Tard dans l'après-midi, La Bufa est également tombée et Medina Barrón a retiré ses troupes survivantes dans la ville. Lorsque La Bufa a été prise, les forces fédérales ont craqué. Sachant que Villa exécuterait certainement tous les officiers, et probablement la plupart des hommes enrôlés aussi, les fédéraux ont paniqué. Les officiers ont arraché leurs uniformes alors qu'ils tentaient de combattre l'infanterie de Villa, qui était entrée dans la ville. Les combats dans les rues étaient féroces et brutaux, et la chaleur torride les a encore aggravés. Un colonel fédéral a fait exploser l'arsenal, se tuant avec des dizaines de soldats rebelles et détruisant un pâté de maisons. Cela a rendu la Villista sur les deux collines, qui ont commencé à pleuvoir dans la ville. Alors que les forces fédérales ont commencé à fuir Zacatecas, Villa a déchaîné sa cavalerie, qui les a massacrés alors qu'ils couraient.
Medina Barrón a ordonné une retraite complète dans la ville voisine de Guadalupe, qui était sur la route d'Aguascalientes. Villa et Angeles l'avaient anticipé, cependant, et les fédéraux furent choqués de voir leur chemin bloqué par 7 000 soldats Villista frais. Là, le massacre a commencé sérieusement, alors que les troupes rebelles décimaient les malheureux Federales. Les survivants ont signalé des collines ruisselantes de sang et des tas de cadavres le long de la route.
Les forces fédérales survivantes ont été rassemblées. Les officiers ont été sommairement exécutés et les hommes enrôlés ont eu le choix: rejoindre Villa ou mourir. La ville a été pillée et seule l'arrivée du général Angeles vers la nuit a mis fin au déchaînement. Le nombre de corps fédéraux est difficile à déterminer: officiellement, il était de 6 000, mais il est nettement plus élevé. Sur les 12 000 soldats de Zacatecas avant l'attaque, seulement 300 environ se sont introduits à Aguascalientes. Parmi eux se trouvait le général Luís Medina Barrón, qui a continué à combattre Carranza même après la chute de Huerta, se joignant à Félix Díaz. Il a ensuite été diplomate après la guerre et est décédé en 1937, l'un des rares généraux de la guerre révolutionnaire à vivre jusqu'à un âge avancé.
Le volume de cadavres à Zacatecas et dans ses environs était trop pour le fossetage normal: ils ont été empilés et brûlés, mais pas avant que le typhus n'ait éclaté et tué de nombreux blessés en difficulté.
La défaite écrasante à Zacatecas a été un coup mortel pour Huerta. Alors que l'annonce de l'anéantissement total de l'une des plus grandes armées fédérales sur le terrain s'est répandue, les soldats ordinaires ont déserté et les officiers ont commencé à changer de camp, espérant rester en vie. Huerta, auparavant intransigeant, a envoyé des représentants à une réunion à Niagara Falls, New York, dans l'espoir de négocier un traité qui lui permettrait de sauver la face. Cependant, lors de la réunion, parrainée par le Chili, l'Argentine et le Brésil, il est rapidement devenu évident que les ennemis de Huerta n'avaient pas l'intention de le laisser partir. Huerta a démissionné le 15 juillet et s'est exilé en Espagne peu de temps après.
La bataille de Zacatecas est également importante car elle marque la rupture officielle de Carranza et Villa. Leurs désaccords avant la bataille ont confirmé ce que beaucoup avaient toujours soupçonné: le Mexique n'était pas assez grand pour eux deux. Les hostilités directes devraient attendre la disparition de Huerta, mais après Zacatecas, il était évident qu'une épreuve de force Carranza-Villa était inévitable.