Fils de Guillaume 1er, comte de Hainaut, de Hollande et de Zélande, et de Jeanne de Valois. Dans sa jeunesse, il fit un pèlerinage en Terre Sainte et combattit les Maures en Espagne. Quand il succéda à son père, celui-ci était en train d’organiser une ligue contre le royaume de France, en soutien à son gendre Édouard III, roi d’Angleterre, qui revendiquait le trône de France et s’apprêtait à déclencher la guerre de Cent Ans. La situation se compliquait pour le jeune comte, car l’empereur Louis IV de Bavière soutenait les revendications du roi d’Angleterre et lui prêta le concours de ses vassaux.
Guillaume était à la fois vassal du roi de France et de l’empereur. Il chercha à se ménager les 2 suzerains mais les mécontenta tous les 2. Finalement, il rejoignit les forces anglaises, par rejet de la conduite de Philippe VI de Valois à son égard. Il s’engagea alors pleinement dans la guerre et reçut le surnom de Hardi.
Le roi de France, par l’entremise de sa sœur qui était également la mère du comte, obtint une trêve avec le comte de Hainaut. Celui-ci en profita pour participer à une des croisades baltes en Prusse avec l’Ordre teutonique. À son retour, il dut soumettre la Frise qui s’était révoltée et fut tué au cours d’un affrontement.
Il avait épousé en 1334 Jeanne qui sera par la suite duchesse de Brabant et de Limbourg.