I need to run an analysis of correlation, however I need to control for one or two variables. In my understanding, I can do this through partial correlation. Yet some of my data is not normally distributed... is this still possible please?
If your data has a normal distribution, Pearson analysis is applied. If it does not conform to the Normal distribution, Spearman correlation analysis is performed. A Spearman correlation analysis would be performed if one or both of its variables did not match the normal distribution.
Your understanding is correct regarding partial correlations. You can use this analysis to control for continuous variables (i.e., covariates).
Regarding normality, you can attempt to transform your data. Have you tried this?
It's also important to note that even if you have univariate normality, you may not have multivariate normality. Multivariate normality can be assessed in R but I don't believe that SPSS has this function. You can use the MVN package in R (https://cran.r-project.org/web/packages/MVN/vignettes/MVN.pdf), although there are other packages (i.e., mvnormtest).
Laerd offers a few tutorials regarding partial correlations and how to transform your data in SPSS that may be helpful:
I would like to run a correlation test for several variables while controlling for a third (possibly a fourth). I have ordinal as well as binary data categories. In SPSS they have a partial correlation test, which uses Pearson's correlation. Is there a non-parametric version/equivalent to this test?