Background: Anaemia affects one in four adults in South Africa, with a higher prevalence in persons with HIV and tuberculosis. The aim of this study is to characterise the causes of anaemia in primary care and a district hospital setting. Methods: A cross-sectional study design investigated a purposive sample of adult males and non-pregnant females at two community health centres and a hospital casualty and outpatients. Fingerpick blood haemoglobin was measured with HemoCueHb201+. Those with moderate and severe anaemia underwent clinical examination and laboratory tests. Results: Of 1327 patients screened, median age was 48 years, and 63.5% were female. Of 471 (35.5%) with moderate and severe anaemia on HemoCue, 55.2% had HIV, 16.6% tuberculosis, 5.9% chronic kidney disease, 2.6% cancer, and 1.3% heart failure. Laboratory testing confirmed 227 (48.2%) with moderate and 111 (23.6%) with severe anaemia, of whom 72.3% had anaemia of inflammation, 26.5% iron-deficiency anaemia, 6.1% folate deficiency, and 2.5% vitamin B12 deficiency. Overall, 57.5% had two or more causes of anaemia. Multivariate modelling showed that patients with severe anaemia were three times more likely to have tuberculosis (OR = 3.1, 95% CI = 1.5–6.5; p-value = 0.002). Microcytosis was present in 40.5% with iron deficiency, macrocytosis in 22.2% with folate deficiency, and 33.3% with vitamin B12 deficiency. The sensitivities of the reticulocyte haemoglobin content and % hypochromic red blood cells in diagnosing iron deficiency were 34.7% and 29.7%, respectively. Conclusions: HIV, iron deficiency, and tuberculosis were the most prevalent causes of moderate and severe anaemia. The majority had multiple causes. Iron, folate, and vitamin B12 deficiencies should be identified by biochemical testing rather than by red cell volume.