La guerre de réforme de 1858 à 1860 avait causé une détresse majeure dans toute l’économie du Mexique et des ennemis acharnés et les conservateurs vaincus restants s’opposaient encore au gouvernement et espéraient une sorte d’espoir pour leur cause. Lors de sa prise de fonction en tant que président élu en 1861, Benito Juárez a été contraint de suspendre le paiement des intérêts des dettes extérieures pendant une période de deux ans. À la fin du mois d’octobre 1861, des diplomates espagnols, français et britanniques se sont réunis à Londres pour former l’Alliance tripartite, dans le but principal de lancer une invasion alliée du Mexique et de s’assurer que le gouvernement mexicain serait disposé à négocier des conditions de remboursement de ses dettes. Cependant, les Français utilisent secrètement l’alliance comme une façade pour envahir le pays fracturé. En décembre 1861, les troupes espagnoles débarquent à Veracruz ; les troupes britanniques et françaises les suivent début janvier. Les forces alliées occupent Veracruz et avancent vers Orizaba. Cependant, l’alliance tripartite s’est effondrée au début du mois d’avril 1862, lorsqu’il est devenu évident que les Français voulaient imposer des exigences sévères au gouvernement de Juarez et provoquer une guerre. Les Britanniques et les Espagnols se sont retirés après avoir négocié pacifiquement des accords avec Juárez, laissant les Français marcher seuls sur Mexico. L’objectif de Napoléon III était de mettre en place un régime mexicain fantoche dans ses premières tentatives pour retrouver la gloire du premier Empire.
Le corps expéditionnaire français de l’époque était dirigé par le général Charles de Lorencez, un commandant expérimenté qui avait servi en Algérie et dans la guerre de Crimée étant promu général de division. La bataille est née d’un malentendu sur l’accord français de retrait vers la côte. Lorsque les forces mexicaines ont vu des soldats français en marche, elles ont pris cela comme un signe de reprise des hostilités et se sont senties menacées. Pour ajouter aux inquiétudes croissantes, les forces mexicaines ont été informées que les négociations politiques pour le retrait avaient échoué. Une plainte véhémente a été déposée par les Mexicains auprès de Lorencez qui a pris cette effronterie comme un plan pour attaquer ses forces. Lorencez décide de retarder son retrait vers la côte en occupant Orizaba, ce qui empêche les Mexicains de défendre les cols entre Orizaba et le port de débarquement de Veracruz. Le commandant général mexicain, Ignacio Zaragoza, vétéran de la guerre de Réforme, se replie au col d’Acultzingo, où lui et son armée sont défaits lors d’une escarmouche avec les forces de Lorencez le 28 avril. Zaragoza se replie sur Puebla, qui était détenue par le gouvernement mexicain depuis la guerre de Réforme. La ville était lourdement fortifiée et cinq forts l’entouraient. Au nord, les deux puissants forts de pierre Loreto et Guadalupe se trouvaient au sommet de deux collines opposées. Saragosse avait fait creuser une tranchée pour rejoindre les forts par la selle. Lorencez s’attendait à rencontrer les forces des conservateurs mexicains qui avaient promis d’aider sa campagne mais il n’y avait aucun signe d’eux. À son insu, Zaragoza avait déjà envoyé une force pour empêcher leur interruption dans la bataille à venir. Il a également été amené à croire que les habitants de Puebla étaient favorables aux Français et que la garnison mexicaine qui gardait la population en respect serait envahie par la population une fois qu’il aurait fait une démonstration de force. Cela s’avérerait être une grave erreur de calcul de la part de Lorencez.
L’armée française se composait principalement de Zuavos, une infanterie légère hautement qualifiée composée initialement de tribus de l’Algérie continentale mais qui, au fil du temps, inclurait plus d’Européens. Ils se sont montrés très compétents et capables pendant la guerre de Crimée et contribueront à l’effort principal pendant la bataille. Les forces françaises sont généralement mieux entraînées et équipées. Leur général commandant, Charles de Lorencez, était un général expérimenté qui avait étudié à l’académie militaire et avait également combattu dans la guerre de Crimée et servi en Algérie, ce qui lui avait valu le grade de général de division.
L’armée mexicaine était une bande de patriotes en haillons par rapport à leurs homologues, mais on pouvait toujours compter sur eux pour servir leur pays. L’armée avait récemment combattu et gagné contre la faction conservatrice pendant la guerre de la Réforme et était compétente dans la guerre conventionnelle et la guérilla. Leur général commandant était Ignacio Zaragoza, un général expérimenté sans formation militaire formelle qui avait dirigé des volontaires pour soutenir Juarez et comprenait l’importance du terrain et du positionnement.