Après avoir encore combattu aux batailles de Sabugal et de Fuentes de Oñoro en avril et , il est confirmé dans son grade de lieutenant-général le . Il bat la cavalerie française du général Lallemand à la bataille de Villagarcia le . Lors de la bataille des Arapiles au mois de juillet, il est commandant en second de l'armée anglo-portugaise. Au cours de l'engagement, il mène une charge brillante contre la division française du général Maucune, faisant dire à Wellington : « par Dieu, Cotton, je n'ai jamais rien vu d'aussi beau de ma vie ; le jour est vôtre ». Dans son rapport ultérieur de la bataille, le commandant en chef britannique écrit que « la cavalerie sous les ordres du lieutenant-général Sir Stapleton Cotton a chargé avec beaucoup de bravoure et de succès un corps d'infanterie ennemie, qu'elle a culbutée et taillée en pièces ». Il est blessé accidentellement par une sentinelle portugaise à la fin de la bataille.