Som underlöjtnant stred MacDonald 1881 mot boerna vid Majuba, togs till fånga, men återfick sin värja av general Joubert som tecken till fiendernas beundran för hans tapperhet. MacDonald deltog från 1885 i fälttågen i Egypten och Sudan, anförde en egyptisk brigad i "Don-golaexpeditionen" 1896 och tillbakaslog som brigadchef i det blodiga slaget vid Omdurman 1898 mahdisternas ursinniga anlopp varigenom han också hämnades Gordons död. Han blev 1899 generalmajor och erhöll ett högt befäl i Indien samt kallades i december samma år till Sydafrika för att överta befälet över den i slaget vid Magersfontein hårt medtagna Höglandsbrigaden. MacDonald anförde den sedan till andra boerkrigets slut, blev svårt sårad vid Paardeberg (februari 1900), men hann likväl deltaga i lord Roberts marsch mot Bloemfontein (mars samma år) och erhöll 1901 knightvärdighet. 1902 blev MacDonald militärbefälhavare på Ceylon.