Faits :
A.
Entre 1992 et 1994, A._, ressortissante marocaine née en 1966, a effectué divers voyages en Suisse, au bénéfice d'autorisations de séjour de courte durée octroyées pour travailler comme danseuse de cabaret. En 1994, l'intéressée a donné naissance à une fille prénommée B._, dont le père est C._, ressortissant italien au bénéfice d'une autorisation d'établissement en Suisse (<ref-law>). Le 1er octobre 1994, A._ a obtenu une autorisation de séjour, régulièrement renouvelée par la suite, afin de vivre avec sa fille et le père de celle-ci. Le 13 février 1998, A._ a épousé C._; l'intéressée a de ce fait obtenu par la suite la nationalité italienne. En 1999, le couple a eu un deuxième enfant, D._ (<ref-law>). Le 13 février 2006, A._ a été mise au bénéfice d'une autorisation d'établissement. Le 23 juin 2020, le tribunal civil compétent a autorisé les époux à vivre séparés.
B.
Le 3 août 2020, le Service des migrations du canton de Neuchâtel (ci-après: le Service cantonal), relevant notamment que A._ avait quitté la Suisse en 2017 pour n'y revenir qu'en 2019, a constaté la caducité de l'autorisation d'établissement de celle-ci, a refusé de lui octroyer une autorisation de séjour et a prononcé son renvoi de Suisse. Le 17 février 2021, le Département de l'économie et de l'action sociale du canton de Neuchâtel (actuellement: le Département de l'emploi et de la cohésion sociale; ci-après: le Département) a rejeté le recours déposé par l'intéressée à l'encontre de cette décision.
Par arrêt du 23 septembre 2021, la Cour de droit public du Tribunal cantonal de la République et canton de Neuchâtel (ci-après: le Tribunal cantonal) a rejeté le recours formé par A._ contre la décision du Département du 17 février 2021. Les juges cantonaux ont retenu, en substance, que l'intéressée n'avait pas réussi à démontrer qu'elle avait vécu en Suisse entre 2017 et 2019, de sorte que son autorisation d'établissement s'était éteinte de plein droit. L'autorité précédente a également considéré que A._ ne pouvait pas se prévaloir d'un cas individuel d'une extrême gravité, afin d'obtenir une autorisation de séjour en dérogation aux conditions d'admission.
C.
Agissant par la voie du recours en matière de droit public, A._ demande au Tribunal fédéral, sous suite de frais et dépens, d'annuler (partiellement) l'arrêt du Tribunal cantonal du 23 septembre 2021 et de constater que son autorisation d'établissement "demeure valable". Subsidiairement, elle conclut à l'annulation (partielle) de l'arrêt entrepris et à l'octroi d'une autorisation de séjour. Plus subsidiairement encore, l'intéressée requiert le renvoi de la cause à l'autorité précédente pour complément d'instruction au sens des considérants. Elle sollicite en outre le bénéfice de l'assistance judiciaire devant le Tribunal fédéral.
Le Service cantonal conclut au rejet du recours. Le Département propose le rejet du recours dans la mesure de sa recevabilité. Le Tribunal cantonal se réfère aux considérants de son arrêt et conclut au rejet du recours.
Par ordonnance du 20 octobre 2021, le Président de la IIe Cour de droit public du Tribunal fédéral a accordé l'effet suspensif au recours.

Considérant en droit :
1.
Le Tribunal fédéral examine d'office sa compétence (<ref-law>) et contrôle librement la recevabilité des recours qui lui sont soumis (<ref-ruling> consid. 1).
1.1. Aux termes de l'art. 83 let. c ch. 2 LTF, le recours en matière de droit public est irrecevable contre les décisions relatives à une autorisation de droit des étrangers à laquelle ni le droit fédéral, ni le droit international ne donnent droit. Selon la jurisprudence, il suffit, sous l'angle de la recevabilité, qu'il existe un droit potentiel à l'autorisation, étayé par une motivation soutenable, pour que cette clause d'exclusion ne s'applique pas et que, partant, la voie du recours en matière de droit public soit ouverte (cf. <ref-ruling> consid. 1.1).
En l'espèce, en sa qualité de ressortissante italienne, la recourante peut en principe prétendre à un titre de séjour en Suisse en vertu de l'ALCP (RS 0.142.112.681; arrêt 2C_235/2019 du 28 mai 2019 consid. 5.1). Le recours échappe dès lors au motif d'irrecevabilité prévu à l'art. 83 let. c ch. 2 LTF, étant précisé que le point de savoir si l'intéressée remplit les conditions pour obtenir l'autorisation requise relève du fond et non de la recevabilité (cf. <ref-ruling> consid. 1.1). La voie du recours en matière de droit public est donc ouverte, sous réserve de ce qui suit.
1.2. La recourante se plaint d'une violation de l'art. 30 al. 1 let. b de la loi fédérale du 16 décembre 2005 sur les étrangers et l'intégration (LEI; RS 142.20), selon lequel il est notamment possible de déroger aux conditions d'admission afin de tenir compte des cas individuels d'une extrême gravité. Le recours en matière de droit public est toutefois irrecevable contre les décisions en matière de droit des étrangers qui concernent les dérogations aux conditions d'admission (art. 83 let. c ch. 5 LTF; arrêt 2D_40/2020 du 16 septembre 2020 consid. 3). Quant à la voie du recours constitutionnel subsidiaire, la qualité pour former un tel recours suppose un intérêt juridique à l'annulation ou à la modification de la décision attaquée (<ref-law>). L'intéressée, qui ne peut se prévaloir de l'art. 30 LEI, ni invoquer de manière indépendante l'interdiction de l'arbitraire, n'a pas une position juridique protégée lui conférant la qualité pour agir au fond sous cet angle (cf. arrêt 2D_40/2020 du 16 septembre 2020 consid. 4). En outre, elle ne se prévaut pas d'une violation de ses droits de partie équivalant à un déni de justice (cf. arrêts 2D_40/2020 du 16 septembre 2020 consid. 4; 2C_529/2020 du 6 octobre 2020 consid. 3.2). Partant, sur ce point, son recours est également irrecevable en tant que recours constitutionnel subsidiaire.
1.3. Au surplus, l'arrêt attaqué est une décision finale (<ref-law>), rendue en dernière instance cantonale par un tribunal supérieur (art. 86 al. 1 let. d et al. 2 LTF) dans une cause de droit public (<ref-law>). Déposé en temps utile (<ref-law>) et dans les formes requises (<ref-law>) par la destinataire de l'arrêt attaqué qui a un intérêt digne de protection à son annulation ou à sa modification (<ref-law>), le recours est donc recevable dans la mesure où il ne concerne pas l'octroi d'une autorisation de séjour en dérogation aux conditions d'admission (consid. 1.2 ci-dessus).
2.
2.1. Saisi d'un recours en matière de droit public, le Tribunal fédéral contrôle librement le respect du droit fédéral (cf. art. 95 let. a et 106 al. 1 LTF; arrêt 2C_300/2019 du 31 janvier 2020 consid. 2.1, non publié in <ref-ruling>).
2.2. Le Tribunal fédéral conduit son raisonnement juridique sur la base des faits constatés par l'autorité précédente (<ref-law>), sous réserve des cas prévus à l'<ref-law>. Selon l'<ref-law>, le recours ne peut critiquer les constatations de fait que si les faits ont été établis de façon manifestement inexacte - notion qui correspond à celle d'arbitraire - ou en violation du droit au sens de l'<ref-law> et si la correction du vice est susceptible d'influer sur le sort de la cause (<ref-ruling> consid. 6; <ref-ruling> consid. 1.6). Conformément à l'<ref-law>, la partie recourante doit expliquer de manière circonstanciée en quoi ces conditions seraient réalisées. A défaut, il n'est pas possible de tenir compte d'un état de fait qui diverge de celui qui est contenu dans l'acte attaqué (cf. arrêt 2C_300/2019 du 31 janvier 2020 consid. 2.2, non publié in <ref-ruling>).
3.
La recourante se prévaut d'un établissement des faits manifestement inexact au sujet de sa présence en Suisse entre 2017 et 2019 et affirme n'avoir "jamais quitté définitivement la Suisse" (recours, p. 7).
3.1. S'agissant de l'appréciation des preuves et des constatations de fait, il y a arbitraire lorsque l'autorité ne prend pas en compte, sans raison sérieuse, un élément de preuve propre à modifier la décision, lorsqu'elle se trompe manifestement sur son sens et sa portée, ou encore lorsque, en se fondant sur les éléments recueillis, elle en tire des constatations insoutenables (<ref-ruling> consid. 1.1).
3.2. En l'espèce, en application de l'<ref-law> (dont le Tribunal fédéral assure le respect d'office; <ref-law>; arrêt 2C_1056/2016 du 22 novembre 2017 consid. 5.1; cf. supra consid. 2.1), le Tribunal cantonal devait, en tant qu'unique instance judiciaire précédant le Tribunal fédéral, examiner librement les faits. Au sujet de la présence en Suisse de l'intéressée, les juges cantonaux, après avoir exposé que celle-ci n'avait "pas réussi à démontrer avoir vécu en Suisse" entre 2017 et 2019, ont relevé que "ce n'est pas parce qu'une autre appréciation des faits que celle effectuée par les autorités précédentes paraît concevable, voire même préférable, que l'appréciation de cette autorité doit être considérée comme étant arbitraire" et que la recourante s'était contentée, "dans une argumentation purement appellatoire, faite de simples allégations nullement étayées, de présenter sa propre vision et appréciation des faits en se limitant à contester celles des autorités inférieures" (arrêt entrepris, p. 9).
En limitant de la sorte sa cognition à l'arbitraire dans l'établissement des faits, le Tribunal cantonal a violé l'<ref-law>. La cause doit dès lors être renvoyée à cette autorité pour qu'elle apprécie librement les preuves et établisse sur cette base elle-même les faits, s'agissant en particulier de la question de la présence en Suisse de l'intéressée entre 2017 et 2019. Il lui appartiendra ensuite de rendre une nouvelle décision fondée sur les faits ainsi établis.
4.
Il se justifie encore de relever que, selon les faits constatés dans l'arrêt entrepris, la recourante est de nationalité italienne. Elle peut ainsi potentiellement se prévaloir de l'ALCP pour en déduire un droit de séjour en Suisse, ce que le Tribunal cantonal aurait aussi dû examiner d'office (<ref-law>). Dans le cadre du renvoi, il appartiendra donc à cette autorité, après instruction, d'examiner le droit éventuel de l'intéressée à une autorisation de séjour en Suisse également sous l'angle de l'ALCP.
5.
Les considérants qui précèdent conduisent à l'admission du recours dans la mesure où il est recevable et à l'annulation de l'arrêt du 23 septembre 2021 du Tribunal cantonal. La cause sera renvoyée à cette autorité pour instruction complémentaire et nouvelle décision dans le sens des considérants.
Il n'est pas perçu de frais judiciaires (art. 66 al. 1 et 4 LTF). La recourante, qui a procédé sans l'aide d'un mandataire professionnel, n'a pas droit à des dépens (<ref-law>). Le présent arrêt rend en outre sans objet la requête d'assistance judiciaire déposée par l'intéressée.

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est admis dans la mesure où il est recevable et l'arrêt rendu le 23 septembre 2021 par le Tribunal cantonal du canton de Neuchâtel est annulé.
2.
La cause est renvoyée au Tribunal cantonal du canton de Neuchâtel pour instruction complémentaire et nouvelle décision dans le sens des considérants.
3.
Il n'est pas perçu de frais judiciaires.
4.
Le présent arrêt est communiqué à la recourante, au Service des migrations et au Département de l'emploi et de la cohésion sociale de la République et canton de Neuchâtel, au Tribunal cantonal de la République et canton de Neuchâtel, Cour de droit public, ainsi qu'au Secrétariat d'Etat aux migrations.
Lausanne, le 28 avril 2022
Au nom de la IIe Cour de droit public
du Tribunal fédéral suisse
La Présidente : F. Aubry Girardin
Le Greffier : A. Ermotti