Faits : A. Par jugement du 17 janvier 2019, le Tribunal criminel des Montagnes et du Val-de-Ruz a reconnu A._ coupable de lésions corporelles simples, d'injures, de menaces et de contrainte sexuelle au préjudice de B._. Il l'a condamné à une peine privative de liberté de 4 ans, sous déduction de 147 jours de détention provisoire, hors exécution anticipée. Il a en outre ordonné l'expulsion de A._ pour une durée de 10 ans. Il a également condamné A._ à verser à B._ 10'000 fr. à titre de réparation morale. B. Par jugement du 5 juillet 2019, la Cour pénale du Tribunal cantonal de la République et canton de Neuchâtel a partiellement admis l'appel de A._. Il l'a reconnu coupable de lésions corporelles simples, d'injures, de menaces et de contrainte sexuelle au préjudice de B._ et l'a condamné à une peine peine privative de liberté de 3 ans et 11 mois, dont à déduire 147 jours de détention provisoire, hors exécution anticipée, ainsi qu'à une peine pécuniaire de 10 jours-amende à 10 fr. le jour. La Cour pénale a de surcroît ordonné l'expulsion de A._ pour une durée de 10 ans et l'a condamné à verser à B._ 10'000 fr. à titre de réparation morale. Le jugement de la Cour pénale repose en substance sur les faits suivants. B.a. A._ et B._ se sont rencontrés à la fin de l'année 2017 à Amsterdam, où vivait ce dernier et où la prénommée s'était rendue à l'occasion d'un voyage. Après leur rencontre, ils ont décidés de s'installer en Suisse et de vivre ensemble. Arrivés dans le canton de Neuchâtel le 7 janvier 2018, le couple a d'abord été hébergé chez une connaissance à C._, avant d'emménager à D._ dans l'appartement que leur avait laissé à disposition une amie de B._. B.b. Le 28 février 2018, B._ a déposé plainte contre A._ en raison de violences qu'elle avait subies de la part de ce dernier. Il lui avait, le 9 février 2018, infligé de nombreux coups lors d'une dispute, lui causant des lésions à l'oeil et des hématomes. B.c. Entre le 1er et le 2 mars 2018, A._ a frappé B._. Il l'a tirée par les cheveux pour l'amener dans la cuisine et l'a menacée avec un couteau. En raison des violences subies, la prénommée s'est évanouie et a vomi à plusieurs reprises. Durant la nuit, A._ l'a ensuite contrainte à entretenir des rapports sexuels, ce dont la prénommée ne voulait pas et ce pour quoi elle avait clairement exprimé son refus. Le 2 mars 2018, après les faits, B._ a très rapidement appelé la police. Elle a été retrouvée par des agents alors qu'elle s'était réfugiée dans la cage d'escaliers d'un immeuble voisin, pleurant, tremblant de peur et présentant des marques de coups au visage. C. A._ forme un recours en matière pénale au Tribunal fédéral contre le jugement du 5 juillet 2019 de la Cour pénale du Tribunal cantonal de la République et canton de Neuchâtel. Il conclut, avec suite de frais et dépens, à son annulation s'agissant en particulier du verdict de culpabilité le concernant, de la peine qui lui a été infligée et de la mesure d'expulsion prononcée à son encontre. Il conclut également à sa réforme, en ce sens qu'il est libéré des chefs de prévention de menace et de contrainte sexuelle retenus à sa charge, que sa libération est ordonnée, et qu'une indemnité de 200 fr. par jour au sens de l'art. 429 CPP pour les jours de détention injustifiés subis à compter du 1er mars 2018 lui est octroyée. Subsidiairement, il conclut à l'annulation partielle du jugement attaqué et à la fixation d'une nouvelle peine ainsi qu'à l'octroi d'une indemnité à forme de l'art. 429 CPP. Plus subsidiairement, il conclut à l'annulation du jugement attaqué et au renvoi de la cause devant l'autorité inférieure pour nouvelle décision au sens des considérants. Il sollicite de surcroît l'octroi de l'assistance judiciaire.