# 2023–24 Primera Federación

The 2023–24 Primera Federación season was the third for the Primera Federación, the third-highest level in the Spanish football league system. Forty teams participated, divided into two groups of twenty clubs each based on geographical proximity. In each group, the champions were automatically promoted to Segunda División and the second to fifth placers played promotion play-offs and the bottom five were relegated to the Segunda Federación.

## Overview before the season

A total of 40 teams joined the league, including four relegated from the 2022–23 Segunda División, 26 retained from the 2022–23 Primera Federación, and ten promoted from the 2022–23 Segunda Federación.

### Team changes

| Promoted from 2022–23 Segunda Federación | Relegated from 2022–23 Segunda División | Promoted to 2023–24 Segunda División | Relegated to 2023–24 Segunda Federación |
| Antequera Arenteiro Atlético Madrid B Atlético Sanluqueño Melilla Recreativo Granada Recreativo Huelva Sestao River Tarazona Teruel | Ibiza Lugo Málaga Ponferradina | Alcorcón Amorebieta Eldense Racing Ferrol | Badajoz Bilbao Athletic Calahorra La Nucía Linense UD Logroñés Numancia Pontevedra San Sebastián de los Reyes Talavera de la Reina |

## Groups
### Group 1 (North)
#### Teams and locations

| Team | Home city | Stadium | Capacity |
| Arenteiro | O Carballiño | Espiñedo | 4,500 |
| Barcelona Atlètic | Barcelona | Johan Cruyff | 6,000 |
| Celta Fortuna | Vigo | Abanca-Balaídos | 24,791 |
| Cornellà | Palamós | Estadi Palamós Costa Brava | 3,724 |
| Cultural Leonesa | León | Reino de León | 13,346 |
| Deportivo La Coruña | A Coruña | Abanca-Riazor | 32,660 |
| Fuenlabrada | Fuenlabrada | Fernando Torres | 5,400 |
| Gimnàstic | Tarragona | Nou Estadi | 14,591 |
| SD Logroñés | Logroño | Las Gaunas | 16,000 |
| Lugo | Lugo | Anxo Carro | 7,070 |
| Osasuna B | Pamplona | Tajonar | 4,500 |
| Ponferradina | Ponferrada | El Toralín | 8,400 |
| Rayo Majadahonda | Majadahonda | Cerro del Espino | 3,800 |
| Real Sociedad B | San Sebastián | José Luis Orbegozo | 2,500 |
| Real Unión | Irun | Stadium Gal | 5,000 |
| Sabadell | Sabadell | Nova Creu Alta | 11,908 |
| Sestao River | Sestao | Las Llanas | 8,905 |
| Tarazona | Tarazona | Municipal de Tarazona | 5,000 |
| Teruel | Teruel | Pinilla | 4,500 |
| Unionistas | Salamanca | Reina Sofía | 5,000 |

#### Personnel and sponsorship

| Team | Manager | Captain | Kit manufacturer | Shirt main sponsor |
| Arenteiro | Javi Rey | Alex Fernández | Kappa | Oreco Balgón Constructora |
| Barcelona Atlètic | Rafael Márquez | Marc Casadó | Nike | Spotify |
| Celta Fortuna | Fredi Álvarez | Raúl Blanco | Adidas | Estrella Galicia |
| Cornellà | Gonzalo Riutort | Kike López | Patrick | Ascensores Eninter |
| Cultural Leonesa | Raúl Llona | Kevin Presa | Kappa | Aspire Academy |
| Deportivo La Coruña | Imanol Idiakez | Ian Mackay | Kappa | Estrella Galicia |
| Fuenlabrada | Alfredo Sánchez | Cristóbal Márquez | Joma | Grupo Avimosa |
| Gimnàstic | Dani Vidal | Joan Oriol | Adidas | Sorigué |
| SD Logroñés | Aitor Larrazábal | Jaime Paredes | Kappa | Embalajes Blanco |
| Lugo | Roberto Trashorras | César Morgado | Puma | Estrella Galicia |
| Osasuna B | Santi Castillejo | Xabi Huarte | Adidas | Jaylo |
| Ponferradina | Juanfran | Yuri de Souza | Adidas | Tvitec |
| Rayo Majadahonda | Jesús Arribas | Jorge Casado | Hummel | Afar 4 |
| Real Sociedad B | Sergio Francisco | Jon Magunazelaia | Macron | |
| Real Unión | Fran Justo | Txusta | Puma | BM Supermercados |
| Sabadell | Óscar Cano | Adrián Ortolá | Hummel | Laboratorio Cerba Internacional |
| Sestao River | Aitor Calle | Gorka Garai | Joma | Miramar Gunitados |
| Tarazona | Molo | Cristian Dieste | Adidas | Patatas Río Lombo |
| Teruel | Raúl Jardiel | Julen Hualde | Adidas | Fertinagro Biotech |
| Unionistas | Dani Ponz | Héctor Nespral | Erreà | Grupo Ecotisa |

#### Managerial changes

| Team | Outgoing manager | Manner of departure | Date of vacancy | Position in table | Incoming manager | Date of appointment |
| Deportivo La Coruña | Rubén de la Barrera | Sacked | 14 June 2023 | Pre-season | Imanol Idiakez | 1 July 2023 |
| Fuenlabrada | Alfredo Sánchez | Demoted to assistant manager | 15 June 2023 | Pre-season | Carlos Martínez | 20 June 2023 |
| Lugo | Iñigo Vélez | Signed by Ponferradina | 16 June 2023 | Pre-season | Pedro Munitis | 21 June 2023 |
| Cultural Leonesa | Israel Martínez | Resigned | 28 June 2023 | Pre-season | Raúl Llona | 1 June 2023 |
| Rayo Majadahonda | Alfredo Santaelena | End of contract | 30 June 2023 | Pre-season | Carlos Cura | 12 June 2023 |
| Ponferradina | Juanfran | End of contract | 30 June 2023 | Pre-season | Iñigo Vélez | 16 June 2023 |
| SD Logroñés | Raúl Llona | End of contract | 30 June 2023 | Pre-season | Jordi Fabregat | 19 June 2023 |
| Real Unión | Iñaki Goikoetxea | End of contract | 30 June 2023 | Pre-season | Fran Justo | 19 June 2023 |
| Tarazona | Javi Moreno | End of contract | 30 June 2023 | Pre-season | Molo | 6 July 2023 |
| Sabadell | Miki Lladó | Sacked | 9 October 2023 | 15th | Gerard Bofill | 10 October 2023 |
| SD Logroñés | Jordi Fabregat | Sacked | 10 October 2023 | 10th | Juanma Barroso (caretaker) | 13 October 2023 |
| SD Logroñés | Juanma Barroso | End of caretaker spell | 15 October 2023 | 15th | Andrés García | 15 October 2023 |
| Sabadell | Gerard Bofill | Sacked | 19 November 2023 | 20th | Óscar Cano | 20 November 2023 |
| Teruel | Víctor Bravo | Sacked | 19 November 2023 | 19th | Raúl Jardiel | 21 November 2023 |
| Lugo | Pedro Munitis | Sacked | 16 December 2023 | 7th | Paulo Alves | 22 December 2023 |
| SD Logroñés | Andrés García | Sacked | 19 December 2023 | 14th | Aitor Larrazábal | 27 December 2023 |
| Rayo Majadahonda | Carlos Cura | Sacked | 22 December 2023 | 17th | Jon Erice | 23 December 2023 |
| Real Unión | Fran Justo | Sacked | 26 December 2023 | 13th | Iñigo Idiakez | 28 December 2023 |
| Lugo | Paulo Alves | Sacked | 19 February 2024 | 9th | Roberto Trashorras | 19 February 2024 |
| Celta Fortuna | Claudio Giráldez | Promoted to the first team | 12 March 2024 | 5th | Fredi Álvarez | 12 March 2024 |
| Ponferradina | Iñigo Vélez | Sacked | 18 March 2024 | 4th | Juanfran | 19 March 2024 |
| Rayo Majadahonda | Jon Erice | Sacked | 25 March 2024 | 20th | Armando de la Morena | 26 March 2024 |
| Real Unión | Iñigo Idiakez | Sacked | 1 April 2024 | 14th | Fran Justo | 4 April 2024 |
| Fuenlabrada | Carlos Martínez | Sacked | 22 April 2024 | 13th | Alfredo Sánchez | 23 April 2024 |
| Rayo Majadahonda | Armando de la Morena | Sacked | 2 May 2024 | 20th | Aitor Núñez (caretaker) | 2 May 2024 |
| Rayo Majadahonda | Aitor Núñez (caretaker) | End of caretaker spell | 6 May 2024 | 20th | Jesús Arribas | 6 May 2024 |

#### League table

| Pos | Team | Pld | W | D | L | GF | GA | GD | Pts | Qualification |
| 1 | Deportivo La Coruña (C, P) | 38 | 22 | 12 | 4 | 64 | 27 | +37 | 78 | Promotion to Segunda División and qualification for the Copa del Rey |
| 2 | Gimnàstic | 38 | 20 | 10 | 8 | 40 | 24 | +16 | 70 | Qualification for the promotion play-offs and Copa del Rey |
| 3 | Barcelona Atlètic | 38 | 21 | 7 | 10 | 59 | 42 | +17 | 70 | Qualification for the promotion play-offs |
| 4 | Celta Fortuna | 38 | 19 | 8 | 11 | 67 | 38 | +29 | 65 | Qualification for the promotion play-offs |
| 5 | Ponferradina | 38 | 17 | 13 | 8 | 38 | 26 | +12 | 64 | Qualification for the promotion play-offs and Copa del Rey |
| 6 | Cultural Leonesa | 38 | 15 | 15 | 8 | 35 | 26 | +9 | 60 | Qualification for the Copa del Rey |
| 7 | Unionistas | 38 | 15 | 13 | 10 | 40 | 29 | +11 | 58 | Qualification for the Copa del Rey |
| 8 | Arenteiro | 38 | 13 | 13 | 12 | 43 | 40 | +3 | 52 | |
| 9 | Real Sociedad B | 38 | 12 | 15 | 11 | 43 | 41 | +2 | 51 | |
| 10 | Lugo | 38 | 13 | 11 | 14 | 39 | 46 | −7 | 50 | |
| 11 | Sestao River | 38 | 11 | 12 | 15 | 38 | 47 | −9 | 45 | |
| 12 | Osasuna B | 38 | 11 | 12 | 15 | 47 | 53 | −6 | 45 | |
| 13 | Tarazona | 38 | 10 | 14 | 14 | 29 | 34 | −5 | 44 | |
| 14 | Fuenlabrada | 38 | 10 | 14 | 14 | 32 | 39 | −7 | 44 | |
| 15 | Real Unión | 38 | 11 | 10 | 17 | 46 | 53 | −7 | 43 | |
| 16 | Sabadell (R) | 38 | 11 | 9 | 18 | 38 | 57 | −19 | 42 | Relegation to Segunda Federación |
| 17 | Teruel (R) | 38 | 6 | 20 | 12 | 32 | 41 | −9 | 38 | Relegation to Segunda Federación |
| 18 | Cornellà (R) | 38 | 8 | 11 | 19 | 30 | 44 | −14 | 35 | Relegation to Segunda Federación |
| 19 | SD Logroñés (R) | 38 | 9 | 8 | 21 | 27 | 55 | −28 | 35 | Relegation to Segunda Federación |
| 20 | Rayo Majadahonda (R) | 38 | 5 | 15 | 18 | 28 | 53 | −25 | 27 | Relegation to Segunda Federación |
* 1 2 Gimnàstic finished ahead of Barcelona Atlètic on head-to-head points: Gimnàstic 1–0 Barcelona Atlètic, Barcelona Atlètic 1–2 Gimnàstic
* 1 2 Sestao River finished ahead of Osasuna B on head-to-head points: Sestao River 2–1 Osasuna B, Osasuna B 0–1 Sestao River
* 1 2 Tarazona finished ahead of Fuenlabrada on head-to-head points: Tarazona 1–0 Fuenlabrada, Fuenlabrada 0–0 Tarazona
* 1 2 Cornellà finished ahead of SD Logroñés on overall goal difference
* ↑ Sestao River awarded a 3–0 victory in their Round 30 match against Rayo Majadahonda after the latter abandoned the pitch due to racial abuse against Cheikh Kané Sarr. Rayo Majadahonda was also deducted 3 points.

#### Results

| Home \ Away | ARE | BAR | CEL | COR | CUL | DEP | FUE | GIM | LOG | LUG | OSA | PON | RMJ | RSO | RUN | SAB | SES | TAR | TER | UNI |
| Arenteiro | — | 2–0 | 1–1 | 1–0 | 1–0 | 1–2 | 1–1 | 0–1 | 3–0 | 1–3 | 1–0 | 0–0 | 2–2 | 1–1 | 2–3 | 2–0 | 1–0 | 1–1 | 1–1 | 4–0 |
| Barcelona Atlètic | 1–1 | — | 1–1 | 1–0 | 4–0 | 1–2 | 2–2 | 1–2 | 1–1 | 1–0 | 2–1 | 1–1 | 3–1 | 2–1 | 2–1 | 4–1 | 2–1 | 2–1 | 1–0 | 0–2 |
| Celta Fortuna | 4–3 | 1–2 | — | 1–2 | 2–0 | 1–2 | 4–1 | 0–1 | 4–0 | 4–1 | 4–1 | 0–0 | 3–0 | 1–2 | 3–0 | 4–2 | 4–0 | 1–0 | 3–3 | 2–1 |
| Cornellà | 1–2 | 0–2 | 2–1 | — | 1–2 | 0–1 | 1–0 | 0–0 | 0–0 | 1–0 | 0–0 | 0–1 | 2–2 | 0–1 | 3–1 | 0–1 | 1–1 | 1–1 | 1–1 | 3–0 |
| Cultural Leonesa | 1–0 | 3–1 | 0–0 | 1–0 | — | 1–0 | 1–1 | 3–0 | 1–0 | 2–0 | 0–2 | 0–0 | 2–1 | 3–1 | 2–0 | 3–0 | 0–1 | 1–1 | 0–0 | 1–1 |
| Deportivo La Coruña | 2–2 | 1–0 | 0–1 | 1–1 | 2–0 | — | 4–1 | 1–0 | 2–0 | 4–1 | 1–1 | 2–0 | 0–0 | 2–1 | 3–1 | 1–1 | 1–1 | 4–1 | 0–0 | 1–0 |
| Fuenlabrada | 0–0 | 1–2 | 0–2 | 2–0 | 0–1 | 2–1 | — | 2–1 | 2–1 | 0–0 | 4–1 | 2–1 | 0–1 | 1–1 | 0–0 | 1–2 | 3–1 | 0–0 | 0–0 | 0–0 |
| Gimnàstic | 1–0 | 1–0 | 1–0 | 3–0 | 3–0 | 1–1 | 1–0 | — | 2–1 | 2–0 | 1–1 | 0–0 | 1–0 | 2–2 | 2–1 | 2–0 | 0–0 | 2–1 | 0–2 | 0–1 |
| SD Logroñés | 1–0 | 1–0 | 2–3 | 2–2 | 0–0 | 0–5 | 0–0 | 0–2 | — | 2–1 | 1–1 | 0–3 | 0–1 | 0–2 | 1–1 | 1–1 | 3–0 | 2–1 | 0–2 | 0–1 |
| Lugo | 0–1 | 1–1 | 0–1 | 3–1 | 0–3 | 0–3 | 0–0 | 0–1 | 2–1 | — | 1–1 | 0–0 | 3–1 | 1–0 | 2–0 | 3–3 | 4–3 | 0–1 | 2–1 | 1–1 |
| Osasuna B | 0–0 | 2–3 | 2–3 | 1–0 | 0–0 | 0–4 | 1–2 | 1–0 | 3–0 | 1–2 | — | 0–1 | 1–1 | 1–2 | 2–1 | 2–0 | 0–1 | 1–1 | 1–1 | 1–0 |
| Ponferradina | 2–1 | 1–3 | 2–1 | 1–0 | 1–2 | 1–1 | 1–0 | 0–1 | 3–0 | 0–0 | 2–1 | — | 1–0 | 2–0 | 2–1 | 1–1 | 1–1 | 0–1 | 1–1 | 1–1 |
| Rayo Majadahonda | 2–0 | 1–2 | 1–1 | 1–3 | 1–1 | 0–2 | 0–0 | 1–1 | 1–0 | 1–2 | 2–2 | 0–1 | — | 1–1 | 1–1 | 3–1 | 0–2 | 0–0 | 0–0 | 0–0 |
| Real Sociedad B | 2–2 | 1–0 | 0–0 | 1–2 | 0–0 | 1–1 | 2–0 | 0–2 | 1–0 | 1–1 | 0–0 | 1–2 | 2–0 | — | 2–2 | 1–2 | 2–3 | 1–0 | 2–2 | 1–1 |
| Real Unión | 1–2 | 0–0 | 1–1 | 1–0 | 0–0 | 3–0 | 2–1 | 1–1 | 0–1 | 0–0 | 2–3 | 1–1 | 4–0 | 1–3 | — | 2–1 | 4–2 | 1–0 | 3–2 | 3–1 |
| Sabadell | 0–1 | 0–1 | 2–1 | 2–1 | 1–1 | 0–1 | 0–1 | 0–0 | 1–2 | 0–1 | 2–1 | 1–0 | 1–1 | 1–2 | 1–0 | — | 3–0 | 3–1 | 1–1 | 1–0 |
| Sestao River | 1–0 | 1–3 | 1–0 | 1–1 | 0–0 | 0–1 | 1–2 | 1–1 | 2–0 | 0–1 | 2–1 | 0–1 | 3–0 | 0–0 | 3–1 | 3–0 | — | 1–1 | 1–1 | 0–0 |
| Tarazona | 1–2 | 0–2 | 1–0 | 0–0 | 0–0 | 1–1 | 1–0 | 1–0 | 0–2 | 1–0 | 1–3 | 2–0 | 2–0 | 0–1 | 0–1 | 3–1 | 3–0 | — | 0–0 | 0–0 |
| Teruel | 0–0 | 2–4 | 0–2 | 1–0 | 0–0 | 1–3 | 0–0 | 0–1 | 0–2 | 1–2 | 2–3 | 0–2 | 1–0 | 0–0 | 2–1 | 2–2 | 1–0 | 0–0 | — | 1–2 |
| Unionistas | 4–0 | 4–1 | 0–2 | 3–0 | 1–0 | 1–1 | 2–0 | 2–0 | 1–0 | 1–1 | 1–2 | 0–1 | 2–1 | 1–0 | 1–0 | 4–0 | 0–0 | 0–0 | 0–0 | — |
* ↑ Sestao River awarded a 3–0 victory in their Round 30 match against Rayo Majadahonda after the latter abandoned the pitch due to racial abuse against Cheikh Kané Sarr.

#### Top scorers

    As of 27 May 2024
| Rank | Player | Club | Goal |
| 1 | Pau Víctor | Barcelona Atlètic | 17 |
| 2 | Alfon | Celta Fortuna | 13 |
| 3 | Alberto Solís | Real Unión | 12 |
| 3 | Ekain Azkune | Real Sociedad B | 12 |
| 3 | Lucas Pérez | Deportivo La Coruña | 12 |
| 3 | Slavy | Unionistas | 12 |
| 3 | Pablo Durán | Celta Fortuna | 12 |

### Group 2 (South)
#### Teams and locations

| Team | Home city | Stadium | Capacity |
| Alcoyano | Alcoy | El Collao | 4,850 |
| Algeciras | Algeciras | Nuevo Mirador | 7,200 |
| Antequera | Antequera | El Maulí | 6,000 |
| Atlético Baleares | Palma | Estadi Balear | 6,000 |
| Atlético Madrid B | Majadahonda | Cerro del Espino | 3,800 |
| Atlético Sanluqueño | Sanlúcar de Barrameda | El Palmar | 5,000 |
| Castellón | Castellón | Castalia | 15,500 |
| Ceuta | Ceuta | Alfonso Murube | 6,500 |
| Córdoba | Córdoba | El Arcángel | 20,989 |
| Ibiza | Ibiza | Can Misses | 6,000 |
| Intercity | Alicante | Antonio Solana | 3,000 |
| Linares | Linares | Linarejos | 10,000 |
| Málaga | Málaga | La Rosaleda | 30,044 |
| Melilla | Melilla | Álvarez Claro | 10,000 |
| Mérida | Mérida | Estadio Romano | 14,600 |
| Murcia | Murcia | Enrique Roca | 31,179 |
| Real Madrid Castilla | Madrid | Alfredo di Stéfano | 6,000 |
| Recreativo Granada | Granada | Ciudad Deportiva | 2,500 |
| Recreativo Huelva | Huelva | Nuevo Colombino | 21,670 |
| San Fernando | San Fernando | Iberoamericano | 12,000 |

#### Personnel and sponsorship

| Team | Manager | Captain | Kit manufacturer | Shirt main sponsor |
| Alcoyano | Vicente Parras | Pablo Carbonell | Kappa | |
| Algeciras | Lolo Escobar | Iván Turrillo | Nike | SCAMP |
| Antequera | Javi Medina | Tomás Lanzini | Hummel | Grupo Casa Diego |
| Atlético Baleares | Jaume Mut | Víctor Pastrana | Joma | ConectaBalear |
| Atlético Madrid B | Luis Tevenet | Sergio Guerrero | Nike | |
| Atlético Sanluqueño | Abel Segovia | Viti | Macron | Bodega Manzanilla Solear |
| Castellón | Dick Schreuder | Salva Ruiz | Macron | Techlam by Levantina |
| Ceuta | José Juan Romero | Ñito González | Kappa | ceuta |
| Córdoba | Iván Ania | Kike Márquez | Givova | BioFy |
| Ibiza | Onésimo Sánchez | Alberto Escassi | Puma | Power Electronics |
| Intercity | Alejandro Sandroni | Álvaro Pérez | Hummel | Vanadi Coffee and Lunch |
| Linares | Romerito | Rodri | Adidas | MLC Energía |
| Málaga | Sergio Pellicer | Juande | Hummel | Sabor a Málaga |
| Melilla | Víctor Basadre | José Antonio González | Macron | Melilla Ciudad del Deporte |
| Mérida | David Rocha | Manuel Bonaque | Macron | Mérida, patrimonio de la humanidad |
| Murcia | Pablo Alfaro | Pedro León | Adidas | |
| Real Madrid Castilla | Raúl González | Álvaro Carrillo | Adidas | Emirates |
| Recreativo Granada | Germán Crespo | Raúl Castro | Adidas | |
| Recreativo Huelva | Abel Gómez | Rubén Gálvez | Adidas | Eternal Energy |
| San Fernando | Nano Rivas | Jonathan Biabiany | Nike | Cristalvent |

#### Managerial changes

| Team | Outgoing manager | Manner of departure | Date of vacancy | Position in table | Incoming manager | Date of appointment |
| Castellón | Albert Rudé | Sacked | 26 June 2023 | Pre-season | Dick Schreuder | 28 June 2023 |
| Antequera | Abel Segovia | End of contract | 30 June 2023 | Pre-season | Javi Medina | 6 June 2023 |
| Ibiza | Lucas Alcaraz | End of contract | 30 June 2023 | Pre-season | Guillermo Fernández Romo | 6 June 2023 |
| Mérida | Juanma Barrero | End of contract | 30 June 2023 | Pre-season | Rai Rosa | 7 June 2023 |
| Córdoba | Manuel Mosquera | End of contract | 30 June 2023 | Pre-season | Iván Ania | 28 June 2023 |
| Murcia | Mario Simón | End of contract | 30 June 2023 | Pre-season | Gustavo Munúa | 2 July 2023 |
| San Fernando | Pablo Alfaro | End of contract | 30 June 2023 | Pre-season | Héctor Berenguel | 3 July 2023 |
| Linares | Alberto González | End of contract | 30 June 2023 | Pre-season | Óscar Fernández | 4 July 2023 |
| Algeciras | Iván Ania | End of contract | 30 June 2023 | Pre-season | Lolo Escobar | 8 July 2023 |
| Atlético Baleares | Tato | Sacked | 25 September 2023 | 20th | Juanma Barrero | 27 September 2023 |
| Mérida | Rai Rosa | Sacked | 9 October 2023 | 15th | David Rocha (caretaker) | 9 October 2023 |
| San Fernando | Héctor Berenguel | Sacked | 16 October 2023 | 15th | Alfredo Santaelena | 16 October 2023 |
| Melilla | Miguel Rivera | Sacked | 22 October 2023 | 19th | Juan Sabas | 24 October 2023 |
| Atlético Sanluqueño | Antonio Iriondo | Sacked | 30 October 2023 | 15th | Abel Segovia | 30 October 2023 |
| Mérida | David Rocha | End of caretaker spell | 30 October 2023 | 18th | Manuel Ruano | 30 October 2023 |
| Murcia | Gustavo Munúa | Sacked | 8 November 2023 | 8th | Pablo Alfaro | 9 November 2023 |
| Linares | Óscar Fernández | Sacked | 22 November 2023 | 16th | Pedro Bolaños (caretaker) | 22 November 2023 |
| Linares | Pedro Bolaños | End of caretaker spell | 29 November 2023 | 16th | David Campaña | 29 November 2023 |
| Mérida | Manuel Ruano | Sacked | 12 December 2023 | 18th | David Rocha | 12 December 2023 |
| Recreativo Granada | Juan Antonio Milla | Sacked | 7 January 2024 | 20th | Germán Crespo | 7 January 2024 |
| Melilla | Juan Sabas | Sacked | 4 March 2024 | 19th | Víctor Basadre | 5 March 2024 |
| Atlético Baleares | Juanma Barrero | Sacked | 12 March 2024 | 18th | Jaume Mut | 13 March 2024 |
| Linares | David Campaña | Sacked | 16 April 2024 | 17th | Romerito | 16 April 2024 |
| Ibiza | Guillermo Fernández Romo | Sacked | 29 April 2024 | 3rd | Onésimo Sánchez | 2 May 2024 |
| San Fernando | Alfredo Santaelena | Sacked | 29 April 2024 | 16th | Nano Rivas | 29 April 2024 |

#### League table

| Pos | Team | Pld | W | D | L | GF | GA | GD | Pts | Qualification |
| 1 | Castellón (C, P) | 38 | 26 | 4 | 8 | 74 | 39 | +35 | 82 | Promotion to Segunda División and qualification for the Copa del Rey |
| 2 | Córdoba (O, P) | 38 | 23 | 8 | 7 | 66 | 32 | +34 | 77 | Qualification for the promotion play-offs and Copa del Rey |
| 3 | Málaga (O, P) | 38 | 19 | 13 | 6 | 51 | 25 | +26 | 70 | Qualification for the promotion play-offs and Copa del Rey |
| 4 | Ibiza | 38 | 19 | 11 | 8 | 57 | 34 | +23 | 68 | Qualification for the promotion play-offs and Copa del Rey |
| 5 | Ceuta | 38 | 17 | 11 | 10 | 55 | 40 | +15 | 62 | Qualification for the promotion play-offs and Copa del Rey |
| 6 | Recreativo Huelva | 38 | 17 | 10 | 11 | 44 | 37 | +7 | 61 | |
| 7 | Murcia | 38 | 16 | 10 | 12 | 38 | 38 | 0 | 58 | |
| 8 | Antequera | 38 | 16 | 8 | 14 | 47 | 47 | 0 | 56 | |
| 9 | Atlético Madrid B | 38 | 13 | 14 | 11 | 53 | 45 | +8 | 53 | |
| 10 | Real Madrid Castilla | 38 | 13 | 12 | 13 | 44 | 43 | +1 | 51 | |
| 11 | Alcoyano | 38 | 14 | 9 | 15 | 38 | 38 | 0 | 51 | |
| 12 | Mérida | 38 | 12 | 11 | 15 | 37 | 45 | −8 | 47 | |
| 13 | Algeciras | 38 | 11 | 13 | 14 | 39 | 43 | −4 | 46 | |
| 14 | Atlético Sanluqueño | 38 | 11 | 12 | 15 | 34 | 41 | −7 | 45 | |
| 15 | Intercity | 38 | 12 | 9 | 17 | 37 | 49 | −12 | 45 | |
| 16 | San Fernando (R) | 38 | 11 | 9 | 18 | 36 | 48 | −12 | 42 | Relegation to Segunda Federación |
| 17 | Linares (R) | 38 | 10 | 9 | 19 | 33 | 51 | −18 | 39 | Relegation to Segunda Federación |
| 18 | Melilla (R) | 38 | 9 | 7 | 22 | 26 | 52 | −26 | 34 | Relegation to Segunda Federación |
| 19 | Atlético Baleares (R) | 38 | 7 | 8 | 23 | 23 | 59 | −36 | 29 | Relegation to Segunda Federación |
| 20 | Recreativo Granada (R) | 38 | 7 | 6 | 25 | 30 | 56 | −26 | 27 | Relegation to Segunda Federación |
* 1 2 Real Madrid Castilla finished ahead of Alcoyano on head-to-head points: Alcoyano 0–0 Real Madrid Castilla, Real Madrid Castilla 3–1 Alcoyano
* 1 2 Atlético Sanluqueño finished ahead of Intercity on head-to-head goal difference: Intercity 1–0 Atlético Sanluqueño, Atlético Sanluqueño 3–0 Intercity

#### Results

| Home \ Away | ALC | ALG | ANT | ATB | ATM | ASL | CAS | CEU | COR | IBI | INT | LIN | MAL | MEL | MER | MUR | RMC | RGR | REC | SFE |
| Alcoyano | — | 1–0 | 2–1 | 1–1 | 0–3 | 3–1 | 2–0 | 3–1 | 0–1 | 0–2 | 1–0 | 1–1 | 0–3 | 3–0 | 1–0 | 2–3 | 0–0 | 0–1 | 2–0 | 1–1 |
| Algeciras | 1–1 | — | 2–3 | 1–0 | 2–2 | 1–1 | 1–1 | 1–0 | 1–0 | 0–0 | 0–1 | 2–1 | 0–0 | 1–0 | 2–0 | 0–1 | 3–0 | 1–1 | 2–3 | 2–1 |
| Antequera | 0–0 | 0–1 | — | 3–0 | 1–0 | 2–1 | 1–1 | 0–0 | 2–3 | 3–1 | 1–1 | 2–0 | 0–2 | 3–0 | 2–2 | 0–2 | 1–2 | 5–2 | 1–1 | 2–1 |
| Atlético Baleares | 2–1 | 1–1 | 2–1 | — | 0–3 | 0–0 | 0–1 | 1–2 | 0–0 | 0–1 | 1–2 | 3–1 | 1–2 | 1–0 | 1–0 | 0–1 | 0–1 | 2–1 | 0–2 | 0–2 |
| Atlético Madrid B | 1–1 | 3–1 | 2–0 | 3–0 | — | 0–0 | 1–1 | 1–3 | 1–6 | 1–1 | 2–1 | 5–0 | 0–1 | 0–0 | 1–1 | 3–1 | 2–0 | 3–2 | 1–2 | 4–2 |
| Atlético Sanluqueño | 1–0 | 0–0 | 0–3 | 5–0 | 0–3 | — | 0–2 | 1–1 | 1–2 | 1–1 | 3–0 | 3–2 | 0–0 | 2–0 | 2–2 | 0–1 | 2–1 | 1–0 | 1–0 | 0–1 |
| Castellón | 2–0 | 2–1 | 4–1 | 4–2 | 2–0 | 0–1 | — | 2–2 | 2–3 | 1–3 | 3–1 | 4–1 | 2–1 | 1–0 | 5–1 | 2–1 | 4–1 | 3–0 | 3–2 | 1–0 |
| Ceuta | 1–0 | 3–2 | 2–0 | 2–1 | 4–0 | 3–0 | 1–3 | — | 1–1 | 0–1 | 2–1 | 4–0 | 3–2 | 0–0 | 1–1 | 1–0 | 2–0 | 1–0 | 0–0 | 0–0 |
| Córdoba | 0–1 | 1–0 | 3–0 | 2–0 | 4–1 | 3–0 | 2–0 | 3–3 | — | 2–3 | 1–0 | 0–1 | 1–0 | 4–0 | 2–1 | 0–0 | 1–2 | 3–0 | 1–0 | 1–0 |
| Ibiza | 3–0 | 2–2 | 3–0 | 1–0 | 0–1 | 0–0 | 2–0 | 1–2 | 1–1 | — | 1–3 | 4–1 | 1–1 | 4–3 | 0–0 | 3–1 | 0–0 | 1–0 | 5–2 | 3–2 |
| Intercity | 1–0 | 1–0 | 2–1 | 0–0 | 0–0 | 1–0 | 1–2 | 3–2 | 0–2 | 0–1 | — | 1–3 | 2–2 | 1–0 | 0–1 | 0–0 | 0–1 | 1–1 | 1–3 | 3–1 |
| Linares | 1–0 | 1–1 | 0–1 | 0–0 | 0–0 | 1–2 | 0–1 | 2–1 | 0–2 | 2–1 | 1–1 | — | 0–1 | 0–0 | 2–0 | 2–0 | 2–1 | 0–0 | 0–2 | 0–1 |
| Málaga | 1–2 | 2–1 | 3–0 | 3–0 | 2–1 | 0–0 | 0–1 | 1–1 | 1–1 | 1–0 | 1–0 | 1–1 | — | 1–0 | 1–1 | 0–0 | 0–0 | 3–0 | 2–0 | 1–0 |
| Melilla | 0–2 | 1–2 | 0–1 | 2–0 | 2–1 | 1–1 | 1–2 | 2–0 | 0–1 | 0–3 | 1–2 | 1–0 | 1–0 | — | 2–0 | 0–0 | 0–1 | 4–3 | 0–0 | 1–0 |
| Mérida | 1–3 | 3–1 | 0–1 | 2–1 | 0–0 | 0–0 | 2–1 | 3–2 | 2–2 | 1–2 | 3–0 | 1–0 | 1–2 | 2–0 | — | 0–1 | 0–1 | 1–0 | 0–0 | 0–2 |
| Murcia | 0–0 | 1–0 | 1–2 | 2–0 | 1–1 | 2–3 | 2–3 | 1–0 | 1–3 | 0–0 | 0–1 | 1–0 | 1–4 | 2–0 | 1–1 | — | 0–0 | 1–0 | 1–0 | 3–0 |
| RM Castilla | 3–1 | 1–2 | 0–0 | 5–0 | 2–2 | 1–0 | 0–2 | 1–1 | 0–2 | 1–1 | 3–3 | 0–0 | 1–2 | 2–2 | 0–1 | 5–1 | — | 1–0 | 1–2 | 2–1 |
| Recreativo Granada | 0–0 | 1–1 | 1–2 | 0–2 | 1–0 | 2–1 | 0–3 | 0–1 | 3–0 | 0–1 | 1–0 | 0–2 | 0–2 | 0–1 | 0–2 | 1–2 | 1–1 | — | 2–1 | 5–0 |
| Recreativo Huelva | 1–0 | 3–0 | 0–0 | 0–0 | 1–1 | 1–0 | 0–3 | 2–1 | 1–1 | 1–0 | 3–1 | 1–4 | 1–1 | 2–0 | 3–0 | 0–1 | 1–0 | 1–0 | — | 1–0 |
| San Fernando | 0–3 | 0–0 | 0–1 | 1–1 | 0–0 | 1–0 | 2–0 | 0–1 | 3–1 | 1–0 | 1–1 | 2–1 | 1–1 | 4–1 | 0–1 | 1–1 | 1–3 | 2–1 | 1–1 | — |

#### Top scorers

    As of 27 May 2024
| Rank | Player | Club | Goal |
| 1 | Jesús de Miguel | Castellón | 16 |
| 2 | Roberto Fernández | Málaga | 15 |
| 3 | Luismi Redondo | Antequera | 13 |
| 3 | Antonio Casas | Córdoba | 13 |

## Promotion play-offs
### Bracket

| Semi–finals (1–2 and 8–9 June) | Semi–finals (1–2 and 8–9 June) | Semi–finals (1–2 and 8–9 June) | Semi–finals (1–2 and 8–9 June) | Semi–finals (1–2 and 8–9 June) | Finals (16 and 22 June) | Finals (16 and 22 June) | Finals (16 and 22 June) | Finals (16 and 22 June) | Finals (16 and 22 June) |
| 5B | Ceuta | 2 | 1 | 3 | | | | | |
| 2A | Gimnàstic | 2 | 2 | 4 | | | | | |
| 2A | Gimnàstic | 2 | 2 | 4 | 2A | Gimnàstic | 1 | 2 | 3 |
| | | | | | 3B | Málaga | 2 | 2 | 4 |
| 4A | Celta Fortuna | 2 | 1 | 3 | 3B | Málaga | 2 | 2 | 4 |
| 3B | Málaga | 2 | 2 | 4 | | | | | |
| Semi–finals (2 and 8–9 June) | Semi–finals (2 and 8–9 June) | Semi–finals (2 and 8–9 June) | Semi–finals (2 and 8–9 June) | Semi–finals (2 and 8–9 June) | Finals (16 and 23 June) | Finals (16 and 23 June) | Finals (16 and 23 June) | Finals (16 and 23 June) | Finals (16 and 23 June) |
| 5A | Ponferradina | 0 | 1 | 1 | | | | | |
| 2B | Córdoba | 1 | 2 | 3 | | | | | |
| 2B | Córdoba | 1 | 2 | 3 | 2B | Córdoba | 1 | 2 | 3 |
| | | | | | 3A | Barcelona Atlètic | 1 | 1 | 2 |
| 4B | Ibiza | 1 | 3 | 4 | 3A | Barcelona Atlètic | 1 | 1 | 2 |
| 3A | Barcelona Atlètic | 2 | 5 | 7 | | | | | |

### First round
#### Qualified teams

| Group | Position | Team |
| 1 | 2nd | Gimnàstic |
| 2 | 2nd | Córdoba |
| Group | Position | Team |
| 1 | 3rd | Barcelona Atlètic |
| 2 | 3rd | Málaga |
| Group | Position | Team |
| 1 | 4th | Celta Fortuna |
| 2 | 4th | Ibiza |
| Group | Position | Team |
| 1 | 5th | Ponferradina |
| 2 | 5th | Ceuta |

#### Matches
##### Semi-finals

| Team 1 | Agg.Tooltip Aggregate score | Team 2 | 1st leg | 2nd leg |
| Gimnàstic | 4–3 | Ceuta | 2–2 | 2–1 |
| Málaga | 4–3 | Celta Fortuna | 2–2 | 2–1 |
| Córdoba | 3–1 | Ponferradina | 1–0 | 2–1 |
| Barcelona Atlètic | 7–4 | Ibiza | 2–1 | 5–3 |

###### Second leg
### Second round
#### Qualified teams

| Group | Position | Team |
| 1 | 2nd | Gimnàstic |
| 2 | 2nd | Córdoba |
| Group | Position | Team |
| 1 | 3rd | Barcelona Atlètic |
| 2 | 3rd | Málaga |

#### Matches
##### Finals

| Team 1 | Agg.Tooltip Aggregate score | Team 2 | 1st leg | 2nd leg |
| Gimnàstic | 3–4 (a.e.t.) | Málaga | 1–2 | 2–2 (a.e.t.) |
| Córdoba | 3–2 | Barcelona Atlètic | 1–1 | 2–1 |

###### Second leg
## Final

The winners of the two regular season groups will face off in a two-leg final to determine the overall champion.
Deportivo La Coruña win 6–3 on aggregate and were therefore crowned 2023–24 Primera Federación champions.

## Attendances

Grupo 1:
| # | Football club | Average attendance |
| 1 | Deportivo de La Coruña | 23,380 |
| 2 | Gimnàstic de Tarragona | 6,898 |
| 3 | SD Ponferradina | 5,859 |
| 4 | Cultural Leonesa | 5,517 |
| 5 | CE Sabadell | 4,073 |
| 6 | Unionistas de Salamanca | 3,412 |
| 7 | Celta Fortuna | 2,966 |
| 8 | CD Lugo | 2,316 |
| 9 | CD Arenteiro | 1,937 |
| 10 | Sestao River Club | 1,909 |
| 11 | FC Barcelona Atlètic | 1,788 |
| 12 | CD Teruel | 1,509 |
| 13 | Real Unión | 1,347 |
| 14 | CF Fuenlabrada | 1,342 |
| 15 | SD Tarazona | 1,297 |
| 16 | SD Logroñés | 1,138 |
| 17 | Real Sociedad | 869 |
| 18 | Rayo Majadahonda | 840 |
| 19 | CA Osasuna B | 694 |
| 20 | UE Cornellà | 656 |
Grupo 2:
| # | Football club | Average attendance |
| 1 | Málaga CF | 21,951 |
| 2 | Real Murcia | 12,035 |
| 3 | Córdoba CF | 12,022 |
| 4 | CD Castellón | 11,705 |
| 5 | Recreativo de Huelva | 9,018 |
| 6 | AD Ceuta | 3,434 |
| 7 | Algeciras CF | 3,224 |
| 8 | Linares Deportivo | 2,747 |
| 9 | Mérida AD | 2,744 |
| 10 | UD Ibiza | 2,500 |
| 11 | Antequera CF | 2,489 |
| 12 | San Fernando CD | 2,484 |
| 13 | CD Alcoyano | 2,347 |
| 14 | Atlético Sanluqueño | 2,332 |
| 15 | UD Melilla | 1,683 |
| 16 | Recreativo Granada | 1,563 |
| 17 | CF Intercity | 1,450 |
| 18 | Atlético Baleares | 1,400 |
| 19 | Real Madrid Castilla | 1,302 |
| 20 | Atlético de Madrid B | 818 |