L'edizione 2003-2004 della Ligue 2 è stato il 65º campionato di calcio francese di seconda divisione.
| AMI | ANG | BES | CAE | CHA | CHâ | CLE | CRé | GRE | GUE | IST | LE | LOR | NAN | ROU | SAI | SED | STA | TRO | VAL |
Amiens | | 1-0 | 1-0 | 0-3 | 2-3 | 0-0 | 1-2 | 1-0 | 0-1 | 1-0 | 0-0 | 2-0 | 1-0 | 2-1 | 2-1 | 1-2 | 1-1 | 3-4 | 1-1 | 2-2 |
Angers | 1-2 | | 2-1 | 0-1 | 0-0 | 2-0 | 0-0 | 2-0 | 1-1 | 2-1 | 1-0 | 3-1 | 1-1 | 2-0 | 0-1 | 1-1 | 0-0 | 3-2 | 2-0 | 0-2 |
Besançon | 0-2 | 2-0 | | 0-1 | 4-0 | 3-1 | 1-1 | 0-0 | 3-1 | 1-1 | 0-1 | 1-1 | 1-1 | 1-3 | 3-0 | 0-1 | 1-1 | 2-2 | 0-1 | 1-1 |
Caen | 2-1 | 1-0 | 1-1 | | 2-2 | 1-0 | 1-2 | 1-2 | 0-0 | 2-1 | 2-1 | 3-1 | 2-0 | 2-0 | 1-1 | 1-0 | 1-0 | 1-2 | 3-0 | 4-1 |
Chamois Niortais | 0-0 | 0-1 | 3-0 | 0-3 | | 0-0 | 3-1 | 3-0 | 1-1 | 1-3 | 2-1 | 0-0 | 1-2 | 2-2 | 2-1 | 0-1 | 1-1 | 4-0 | 2-1 | 1-0 |
Châteauroux | 4-1 | 4-1 | 0-0 | 1-1 | 0-0 | | 2-2 | 1-3 | 0-0 | 3-2 | 1-0 | 2-1 | 2-2 | 0-0 | 2-0 | 2-0 | 2-0 | 2-1 | 1-1 | 3-0 |
Clermont Foot | 0-2 | 4-1 | 0-2 | 2-2 | 0-1 | 0-1 | | 2-0 | 2-0 | 1-0 | 1-1 | 1-1 | 0-4 | 0-1 | 0-0 | 0-3 | 0-1 | 2-1 | 0-0 | 1-1 |
Créteil-Lusitanos | 1-1 | 1-1 | 1-1 | 0-0 | 2-2 | 1-0 | 5-1 | | 1-1 | 1-1 | 0-2 | 2-3 | 1-0 | 1-0 | 0-0 | 1-0 | 0-1 | 3-0 | 1-2 | 2-1 |
Grenoble | 1-0 | 0-0 | 0-0 | 2-1 | 0-1 | 4-1 | 0-0 | 1-1 | | 2-2 | 0-1 | 2-0 | 1-1 | 2-3 | 0-0 | 2-2 | 0-0 | 1-1 | 1-2 | 4-3 |
Gueugnon | 0-1 | 1-1 | 1-0 | 0-0 | 1-2 | 2-0 | 0-0 | 1-1 | 0-2 | | 1-0 | 1-2 | 1-1 | 0-0 | 2-1 | 0-1 | 0-0 | 1-1 | 1-1 | 2-0 |
Istres | 1-0 | 1-0 | 0-1 | 3-1 | 2-2 | 2-1 | 2-0 | 2-0 | 2-0 | 2-1 | | 2-0 | 1-0 | 2-0 | 0-0 | 0-2 | 2-0 | 2-1 | 0-0 | 3-1 |
Le Havre | 0-1 | 1-0 | 2-0 | 1-1 | 1-1 | 3-2 | 1-1 | 1-1 | 1-0 | 5-0 | 0-0 | | 1-0 | 0-0 | 2-0 | 1-0 | 3-0 | 3-2 | 3-0 | 1-0 |
Lorient | 3-1 | 2-0 | 2-0 | 2-3 | 4-2 | 0-1 | 1-1 | 0-3 | 2-1 | 0-5 | 2-1 | 2-0 | | 2-0 | 4-1 | 2-0 | 1-1 | 1-0 | 1-0 | 3-1 |
Nancy | 0-0 | 2-1 | 3-0 | 0-2 | 1-0 | 2-0 | 3-4 | 2-0 | 0-0 | 0-2 | 2-1 | 4-1 | 1-1 | | 2-1 | 0-1 | 2-0 | 1-1 | 3-0 | 1-1 |
Rouen | 2-1 | 3-1 | 1-1 | 1-2 | 2-1 | 1-4 | 0-0 | 1-1 | 0-2 | 0-0 | 1-3 | 4-0 | 0-1 | 1-1 | | 0-1 | 0-1 | 1-1 | 0-1 | 1-1 |
Saint-Etienne | 0-2 | 0-0 | 2-1 | 1-0 | 2-1 | 2-1 | 0-0 | 3-2 | 1-0 | 1-1 | 0-0 | 2-0 | 2-1 | 0-0 | 2-0 | | 0-2 | 2-0 | 2-3 | 1-0 |
Sedan | 3-1 | 1-0 | 2-0 | 0-0 | 1-1 | 2-0 | 1-1 | 4-0 | 4-1 | 1-1 | 3-1 | 2-0 | 2-1 | 0-4 | 0-0 | 1-2 | | 1-0 | 3-0 | 0-0 |
Stade Laval | 1-2 | 3-3 | 1-3 | 1-0 | 0-1 | 2-0 | 2-3 | 3-1 | 2-0 | 1-2 | 0-0 | 1-1 | 2-2 | 2-0 | 0-0 | 2-0 | 2-0 | | 4-0 | 2-2 |
Troyes | 3-2 | 2-2 | 1-1 | 2-2 | 1-0 | 4-0 | 2-0 | 0-0 | 3-2 | 2-1 | 0-2 | 2-0 | 3-3 | 1-1 | 3-0 | 0-1 | 0-0 | 0-0 | | 0-1 |
Valence | 2-1 | 0-1 | 3-1 | 0-2 | 1-1 | 3-0 | 1-1 | 2-2 | 1-2 | 3-1 | 0-0 | 1-2 | 1-2 | 0-0 | 2-1 | 1-3 | 2-2 | 2-1 | 2-1 | |
Andata (1ª) | 1ª giornata | Ritorno (20ª) | | | | | | 1 ago. | 0-0 | Le Havre-Nancy | 1-4 | 22 mag. | 2 ago. | 2-2 | Troyes-Caen | 0-3 | 3-0 | Chamois Niortais-Créteil-Lusitanos | 2-2 | 1-2 | Stade Laval-Amiens | 4-3 | 2-0 | Istres-Sedan | 1-3 | 1-1 | Gueugnon-Lorient | 5-0 | 0-0 | Grenoble-Besançon | 1-3 | 0-0 | Clermont Foot-Rouen | 0-0 | 2-0 | Châteauroux-Saint-Etienne | 1-2 | 0-2 | Angers-Valence | 1-0 | | Andata (2ª) | 2ª giornata | Ritorno (21ª) | | | | | | 9 ago. | 3-0 | Valence-Châteauroux | 0-3 | 10 gen. | 3-2 | Troyes-Grenoble | 2-1 | 1-1 | Sedan-Chamois Niortais | 1-1 | 1-1 | Rouen-Stade Laval | 0-0 | 0-1 | Nancy-Saint-Etienne | 0-0 | 1-1 | Créteil-Lusitanos-Gueugnon | 1-1 | 1-2 | Caen-Clermont Foot | 2-2 | 0-1 | Besançon-Istres | 1-0 | 1-0 | Amiens-Angers | 2-1 | 12 gen. | 10 ago. | 2-0 | Lorient-Le Havre | 0-1 | 11 gen. | |
Andata (3ª) | 3ª giornata | Ritorno (22ª) | | | | | | 15 ago. | 2-1 | Saint-Etienne-Lorient | 0-2 | 18 gen. | 16 ago. | 1-0 | Chamois Niortais-Valence | 1-1 | 17 gen. | 1-1 | Le Havre-Créteil-Lusitanos | 3-2 | 1-3 | Stade Laval-Besançon | 2-2 | 3-1 | Istres-Caen | 1-2 | 0-1 | Gueugnon-Amiens | 0-1 | 0-0 | Grenoble-Rouen | 2-0 | 0-0 | Clermont Foot-Troyes | 0-2 | 0-0 | Châteauroux-Nancy | 0-2 | 0-0 | Angers-Sedan | 0-1 | | Andata (4ª) | 4ª giornata | Ritorno (23ª) | | | | | | 19 ago. | 1-2 | Valence-Le Havre | 0-1 | 31 gen. | 2-0 | Sedan-Châteauroux | 0-2 | 3-1 | Rouen-Angers | 1-0 | 2-0 | Lorient-Nancy | 1-1 | 2 feb. | 1-0 | Créteil-Lusitanos-Saint-Etienne | 2-3 | 31 gen. | 0-1 | Clermont Foot-Chamois Niortais | 1-3 | 0-0 | Caen-Grenoble | 1-2 | 1-1 | Besançon-Gueugnon | 0-1 | 0-0 | Amiens-Istres | 0-1 | 1 feb. | 0-0 | Troyes-Stade Laval | 0-4 | 31 gen. | |
Andata (5ª) | 5ª giornata | Ritorno (24ª) | | | | | | 22 ago. | 3-0 | Le Havre-Sedan | 0-2 | 7 feb. | 23 ago. | 2-3 | Saint-Etienne-Troyes | 1-0 | 8 feb. | 0-0 | Chamois Niortais-Amiens | 3-2 | 7 feb. | 2-0 | Nancy-Créteil-Lusitanos | 0-1 | 1-0 | Stade Laval-Caen | 2-1 | 0-0 | Istres-Rouen | 3-1 | 2-0 | Gueugnon-Valence | 1-3 | 0-0 | Grenoble-Clermont Foot | 0-2 | 2-2 | Châteauroux-Lorient | 1-0 | 2-1 | Angers-Besançon | 0-2 | | Andata (6ª) | 6ª giornata | Ritorno (25ª) | | | | | | 29 ago. | 3-1 | Besançon-Châteauroux | 0-0 | 14 feb. | 30 ago. | 0-0 | Valence-Nancy | 1-1 | 0-2 | Troyes-Istres | 0-0 | 2-1 | Rouen-Chamois Niortais | 1-2 | 2-2 | Grenoble-Gueugnon | 2-0 | 1-0 | Créteil-Lusitanos-Lorient | 3-0 | 2-1 | Clermont Foot-Stade Laval | 3-2 | 1-0 | Caen-Angers | 1-0 | 2-0 | Amiens-Le Havre | 1-0 | 15 feb. | 31 ago. | 1-2 | Sedan-Saint-Etienne | 2-0 | 14 feb. | |
Andata (7ª) | 7ª giornata | Ritorno (26ª) | | | | | | 4 set. | 2-0 | Stade Laval-Grenoble | 1-1 | 21 feb. | 5 set. | 1-0 | Saint-Etienne-Valence | 3-1 | 0-3 | Chamois Niortais-Caen | 2-2 | 23 feb. | 2-0 | Nancy-Sedan | 4-0 | 21 feb. | 3-1 | Lorient-Amiens | 0-1 | 22 feb. | 2-0 | Le Havre-Besançon | 1-1 | 21 feb. | 2-0 | Istres-Clermont Foot | 1-1 | 2-1 | Gueugnon-Rouen | 0-0 | 1-3 | Châteauroux-Créteil-Lusitanos | 0-1 | 2-0 | Angers-Troyes | 2-2 | | Andata (8ª) | 8ª giornata | Ritorno (27ª) | | | | | | 12 set. | 1-0 | Troyes-Chamois Niortais | 1-2 | 16 apr. | 13 set. | 2-2 | Valence-Créteil-Lusitanos | 1-2 | 28 feb. | 2-1 | Sedan-Lorient | 1-1 | 1-1 | Rouen-Nancy | 1-2 | 1-1 | Stade Laval-Le Havre | 2-3 | 0-1 | Grenoble-Istres | 0-2 | 4-1 | Clermont Foot-Angers | 0-0 | 2-1 | Caen-Gueugnon | 0-0 | 0-1 | Besançon-Saint-Etienne | 1-2 | 16 apr. | 0-0 | Amiens-Châteauroux | 1-4 | 27 feb. | |
Andata (9ª) | 9ª giornata | Ritorno (28ª) | | | | | | 20 set. | 3-0 | Chamois Niortais-Besançon | 0-4 | 6 mar. | 3-4 | Nancy-Clermont Foot | 1-0 | 3-1 | Lorient-Valence | 2-1 | 2-0 | Le Havre-Rouen | 0-4 | 2-1 | Istres-Stade Laval | 0-0 | 8 mar. | 1-1 | Gueugnon-Troyes | 1-2 | 6 mar. | 0-1 | Créteil-Lusitanos-Sedan | 0-4 | 1-1 | Châteauroux-Caen | 0-1 | 1-1 | Angers-Grenoble | 0-0 | 21 set. | 0-2 | Saint-Etienne-Amiens | 2-1 | 5 mar. | | Andata (10ª) | 10ª giornata | Ritorno (29ª) | | | | | | 27 set. | 2-0 | Troyes-Le Havre | 0-3 | 13 mar. | 0-0 | Sedan-Valence | 2-2 | 1-4 | Rouen-Châteauroux | 0-2 | 3-3 | Stade Laval-Angers | 2-3 | 0-1 | Grenoble-Chamois Niortais | 1-1 | 1-0 | Clermont Foot-Gueugnon | 0-0 | 1-0 | Caen-Saint-Etienne | 0-1 | 14 mar. | 1-3 | Besançon-Nancy | 0-3 | 13 mar. | 1-0 | Amiens-Créteil-Lusitanos | 1-1 | 28 set. | 1-0 | Istres-Lorient | 1-2 | |
Andata (11ª) | 11ª giornata | Ritorno (30ª) | | | | | | 3 ott. | 2-0 | Saint-Etienne-Rouen | 1-0 | 20 mar. | 4 ott. | 2-1 | Valence-Amiens | 2-2 | 4-0 | Chamois Niortais-Stade Laval | 1-0 | 3-0 | Nancy-Troyes | 1-1 | 1-1 | Le Havre-Caen | 1-3 | 21 mar. | 0-0 | Gueugnon-Sedan | 1-1 | 20 mar. | 5-1 | Créteil-Lusitanos-Clermont Foot | 0-2 | 0-0 | Châteauroux-Grenoble | 1-4 | 1-0 | Angers-Istres | 0-1 | 6 ott. | 2-0 | Lorient-Besançon | 1-1 | | Andata (12ª) | 12ª giornata | Ritorno (31ª) | | | | | | 18 ott. | 4-0 | Troyes-Châteauroux | 1-1 | 27 mar. | 1-1 | Rouen-Créteil-Lusitanos | 0-0 | 1-2 | Stade Laval-Gueugnon | 1-1 | 2-0 | Istres-Nancy | 1-2 | 28 mar. | 2-0 | Grenoble-Le Havre | 0-1 | 27 mar. | 2-0 | Caen-Lorient | 3-2 | 1-1 | Besançon-Valence | 1-3 | 0-0 | Angers-Chamois Niortais | 1-0 | 19 ott. | 0-3 | Clermont Foot-Saint-Etienne | 0-0 | 20 ott. | 1-1 | Amiens-Sedan | 1-3 | |
Andata (13ª) | 13ª giornata | Ritorno (32ª) | | | | | | 25 ott. | 2-1 | Valence-Troyes | 1-0 | 3 apr. | 1-0 | Saint-Etienne-Grenoble | 2-2 | 2 apr. | 2-0 | Sedan-Besançon | 1-1 | 3 apr. | 0-0 | Nancy-Amiens | 1-2 | 4-1 | Lorient-Rouen | 1-0 | 1-1 | Le Havre-Clermont Foot | 1-1 | 1-1 | Gueugnon-Angers | 1-2 | 0-0 | Créteil-Lusitanos-Caen | 2-1 | 2-1 | Châteauroux-Stade Laval | 0-2 | 26 ott. | 2-1 | Chamois Niortais-Istres | 2-2 | 5 apr. | | Andata (14ª) | 14ª giornata | Ritorno (33ª) | | | | | | 31 ott. | 0-4 | Clermont Foot-Lorient | 1-1 | 10 apr. | 1 nov. | 0-2 | Besançon-Amiens | 0-1 | 0-0 | Troyes-Créteil-Lusitanos | 2-1 | 0-1 | Rouen-Sedan | 0-0 | 2-0 | Stade Laval-Saint-Etienne | 0-2 | 11 apr. | 2-1 | Istres-Gueugnon | 0-1 | 10 apr. | 2-3 | Grenoble-Nancy | 0-0 | 4-1 | Caen-Valence | 2-0 | 2-0 | Angers-Châteauroux | 1-4 | 3 nov. | 0-0 | Chamois Niortais-Le Havre | 1-1 | |
Andata (15ª) | 15ª giornata | Ritorno (34ª) | | | | | | 7 nov. | 0-0 | Saint-Etienne-Istres | 2-0 | 23 apr. | 8 nov. | 2-1 | Valence-Rouen | 1-1 | 24 apr. | 0-0 | Sedan-Caen | 0-1 | 1-1 | Nancy-Stade Laval | 0-2 | 2-1 | Lorient-Grenoble | 1-1 | 1-0 | Le Havre-Angers | 1-3 | 1-2 | Gueugnon-Chamois Niortais | 3-1 | 1-1 | Créteil-Lusitanos-Besançon | 0-0 | 2-2 | Châteauroux-Clermont Foot | 1-0 | 23 apr. | 1-1 | Amiens-Troyes | 2-3 | 24 apr. | | Andata (16ª) | 16ª giornata | Ritorno (35ª) | | | | | | 28 nov. | 2-2 | Stade Laval-Lorient | 0-1 | 1 mag. | 0-0 | Troyes-Sedan | 0-3 | 29 nov. | 1-1 | Rouen-Besançon | 0-3 | 0-0 | Chamois Niortais-Châteauroux | 0-0 | 2-0 | Istres-Le Havre | 0-0 | 0-0 | Gueugnon-Nancy | 2-0 | 1-1 | Grenoble-Créteil-Lusitanos | 1-1 | 1-1 | Clermont Foot-Valence | 1-1 | 1-1 | Angers-Saint-Etienne | 0-0 | 30 nov. | 2-1 | Caen-Amiens | 3-0 | 2 mag. | |
Andata (17ª) | 17ª giornata | Ritorno (36ª) | | | | | | 3 dic. | 5-0 | Le Havre-Gueugnon | 2-1 | 8 mag. | 1-1 | Sedan-Clermont Foot | 1-0 | 2-1 | Nancy-Angers | 0-2 | 3-0 | Créteil-Lusitanos-Stade Laval | 1-3 | 1-0 | Châteauroux-Istres | 1-2 | 0-1 | Besançon-Caen | 1-1 | 2-1 | Amiens-Rouen | 1-2 | 4 dic. | 1-0 | Lorient-Troyes | 3-3 | 10 mag. | 10 dic. | 2-1 | Saint-Etienne-Chamois Niortais | 1-0 | 7 mag. | 17 dic. | 1-2 | Valence-Grenoble | 3-4 | 8 mag. | | Andata (18ª) | 18ª giornata | Ritorno (37ª) | | | | | | 6 dic. | 2-2 | Chamois Niortais-Nancy | 0-1 | 12 mag. | 2-2 | Stade Laval-Valence | 1-2 | 0-1 | Gueugnon-Saint-Etienne | 1-1 | 13 mag. | 0-0 | Grenoble-Sedan | 1-4 | 12 mag. | 0-2 | Clermont Foot-Amiens | 2-1 | 7 dic. | 2-0 | Istres-Créteil-Lusitanos | 2-0 | 1-1 | Caen-Rouen | 2-1 | 1-1 | Troyes-Besançon | 1-0 | 13 mag. | 1-1 | Angers-Lorient | 0-2 | 8 dic. | 3-2 | Le Havre-Châteauroux | 1-2 | 12 mag. | |
Andata (19ª) | 19ª giornata | Ritorno (38ª) | | | | | | 20 dic. | 0-2 | Nancy-Caen | 0-2 | 16 mag. | 1-1 | Besançon-Clermont Foot | 2-0 | 0-0 | Valence-Istres | 1-3 | 1-0 | Sedan-Stade Laval | 0-2 | 0-1 | Rouen-Troyes | 0-3 | 4-2 | Lorient-Chamois Niortais | 2-1 | 1-1 | Créteil-Lusitanos-Angers | 0-2 | 3-2 | Châteauroux-Gueugnon | 0-2 | 0-1 | Amiens-Grenoble | 0-1 | 21 dic. | 2-0 | Saint-Etienne-Le Havre | 0-1 | | |