Depuis 2018 et l'élection du libéral-radical Didier Castella en remplacement de l'écologiste Marie Garnier, le Conseil d'État fribourgeois se composait de trois élus du Centre, deux du PLR et deux du PS; une majorité bourgeoise que la gauche aspirait à renverser à l'occasion des élections cantonales de novembre 2021. Pour ce faire, Christian Levrat est sorti du bois près d'une année avant l'échéance en se profilant comme chef de file du parti socialiste. Poids lourd de l'arène fédérale, le sénateur faisait figure de candidat idoine pour remplacer Anne-Claude Demierre, qui se retirait après quatorze années au gouvernement, et conserver les deux sièges socialistes, aux côtés de Jean-François Steiert, élu en 2016. Au début du mois d'avril 2021, Christian Levrat a cependant surpris en se retirant de la course. En effet, le sénateur socialiste a accédé à la présidence du conseil d'administration de la Poste, succédant à Urs Schwaller, un autre fribourgeois. Ce nouveau mandat étant incompatible avec toute fonction politique, une élection complémentaire a d'une part été organisée en septembre 2021 pour repourvoir le strapontin laissé vacant au Conseil des États. D'autre part, le parti socialiste s'est retrouvé quelque peu démuni dans la course au gouvernement, perdant sa locomotive pour la campagne. Pour remplacer Levrat, la conseillère nationale Valérie Piller Carrard (ps) s'est portée candidate. Non-élue en 2018 face à Castella, elle a rejoint Steiert et Alizée Rey, présidente de la section cantonale, sur la liste socialiste. La gauche est partie unie dans la bataille, le PS, les Verts et le Centre gauche-PCS s'étant mis d'accord pour une alliance, à l'image de ce qui avait été fait lors des précédentes élections cantonales. Aux côtés des candidat.e.s socialistes, l'écologiste Sylvie Bonvin-Sansonnens, présidente du Grand Conseil, et la présidente du Centre gauche-PCS Sophie Tritten partageaient l'objectif de récupérer le siège perdu en 2018, voire de faire basculer la majorité en décrochant un quatrième mandat.
Face à la gauche unie, la droite est partie en ordre dispersé dans la campagne. Historiquement fort au gouvernement, le Centre tenait à conserver ses trois sièges. Alors qu'Olivier Curty (centre) et Jean-Pierre Siggen (centre) visaient une réélection, le grand argentier Georges Godel (centre) ne pouvait plus se représenter, ayant atteint la limite de mandats. Pour le remplacer, le parti a désiré présenter une femme. Cependant, la perle rare fût difficile à trouver. Peu connue dans la sphère politique fribourgeoise, Luana Menoud-Baldi (centre), d'origine tessinoise mais établie dans le canton depuis 2007, a finalement été choisie pour défendre le siège laissé vacant. Chez les PLR, Maurice Ropraz ne s'est pas représenté, après deux mandats. Son collègue Didier Castella était lui candidat. À ses côtés, le chef du groupe PLR au Grand Conseil Romain Collaud s'est lancé dans la course. Sans représentant au gouvernement depuis le départ de Raphaël Rimaz en 1996, l'UDC a une nouvelle fois tenté de retrouver un siège en présentant plusieurs candidatures. Les députés Philippe Demierre, Gilberte Schär, Adrian Brügger et le conseiller général en ville de Fribourg David Papaux, ancien champion de judo, figuraient ainsi parmi les candidat.e.s. Eux aussi désireux d'obtenir une part du gâteau, les Vert'libéraux ont présenté Irene Bernhard et Loris Grandjean. Parmi les autres postulant.e.s à un siège à l'exécutif, on retrouvait encore le fondateur du parti des artistes et conseiller général à Fribourg Claudio Rugo, déjà candidat en 2016 et 2018, ainsi que Nicole Ayer et Michèle Courant, qui souhaitaient rappeler que «le peuple reste souverain» avec leur liste «DDirecte.ch (DDSN-FRIBOURG)».
En vertu de la nouvelle loi cantonale sur le financement de la politique, découlant d'une initiative de la jeunesse socialiste acceptée en 2018, les partis ont dû communiquer leur budget six semaines avant les élections. Le Centre a annoncé disposer de CHF 270'000 pour la campagne, le plus gros budget parmi les formations engagées. Le PLR tablait sur un budget de CHF 200'000, le PS sur CHF 146'000, en ne prenant en compte que le premier tour cependant, les Verts sur CHF 110'000 et l'UDC sur CHF 96'000. Le budget de deux autres partis dépassait encore CHF 10'000, limite au-delà de laquelle il est obligatoire de déclarer les fonds, à savoir les vert'libéraux avec CHF 37'700 et le Centre gauche-PCS avec CHF 31'000. S'agissant des budgets personnels des candidat.e.s, la centriste Luana Menoud-Baldi était celle qui disposait des ressources financières les plus importantes avec CHF 76'000, destinés avant tout à la faire connaître dans le canton. Suivaient les libéraux-radicaux Didier Castella (CHF 73'000) et Romain Collaud (CHF 55'000).
Avant l'élection de nouvelles têtes à l'exécutif, le journal La Liberté a profité d'établir un bilan de la législature. Qualifié de «champion des petits pas», le gouvernement s'est vu reprocher un «manque de vision à long terme» de la part des chefs de groupe au Grand Conseil. Des critiques déjà formulées lors des dernières législatures, a relevé la Liberté, qui regrettait «le manque de personnalités fortes qui font entendre leur voix au-delà des frontières du canton». Le journal a cependant souligné que de nombreux projets ont vu le jour, à l'image de la réforme fiscale des entreprises et de la révision de la Caisse de prévoyance du personnel de l'État. Si les finances publiques se portent bien, c'est surtout le manque d'ambition à l'égard de certaines problématiques qui a fait l'objet de critiques. La Liberté a illustré cela avec les objectifs climatiques du canton, en précisant que «se doter d'un plan climat, c'est bien, mais l'assortir d'un montant de CHF 21 millions jusqu'en 2026 est nettement insuffisant».
Le premier tour s'est déroulé le 7 novembre 2021, parallèlement à l'élection du Grand Conseil. Avec une participation de 37.63 pour cent, le socialiste Jean-François Steiert a terminé en tête des suffrages (32'892 voix, à environ 6'000 voix de la majorité absolue), entraînant dans son sillage toute l'alliance de gauche, qui a placé quatre de ses représentant.e.s parmi les sept premier.ère.s. Pour être précis, Sylvie Bonvin-Sansonnens a occupé la deuxième place (30'881 voix), Valérie Piller Carrard la quatrième (30'201 voix), Alizé Rey la sixième (25'402 voix) et Sophie Tritten la huitième (24'447 voix). Un beau tir groupé qui contrastait avec la débâcle du côté du Centre: pourtant le mieux élu en 2016, Jean-Pierre Siggen a terminé seulement neuvième, avec 22'745 suffrages, alors que Luana Menoud-Baldi finissait dixième, décrochée par rapport à ses adversaires, avec 17'068 voix. Seul Olivier Curty a sauvé quelque peu les meubles, crédité de 26'373 voix, en cinquième place. Chez les libéraux-radicaux, Didier Castella a pris la troisième place (30'659 voix) et Romain Collaud la septième (24'994 voix), alors que les candidat.e.s de l'UDC ont terminé plus loin, avec Philippe Demierre au onzième rang (14'107 voix), suivi par ses colistier.ère.s. Les autres candidat.e.s n'ont pas atteint le nombre de suffrages requis pour se présenter au second tour.
Au vu des résultats inattendus du premier tour, l'heure des nouvelles stratégies ne s'est pas fait attendre pour préparer le deuxième tour. A droite, la question d'une alliance est rapidement revenue sur le tapis. Cependant, celle-ci n'était possible qu'en consentant à certains sacrifices. Les regards se sont donc dirigés vers le Centre, qui pouvait difficilement revendiquer trois sièges suite à la déception du premier tour. Sans surprise, Luana Menoud-Baldi a fait les frais de son résultat décevant et a dû se retirer de la course, permettant la création d'une alliance de droite avec deux centristes, deux PLR et un UDC, en la personne de Philippe Demierre. Cette décision a acté la perte du troisième siège du Centre, qui n'avait pas été dans cette situation depuis 1857 et la fin du régime radical ayant suivi la guerre du Sonderbund, a précisé la Liberté. De l'autre côté de l'échiquier politique, la gauche était bien consciente que le deuxième tour serait bien différent contre une droite unie, face à laquelle obtenir la majorité des sièges relèverait d'une véritable sensation. L'alliance a décidé de partir à quatre, retirant la candidature d'Alizée Rey, malgré son bon score, au profit de Sophie Tritten, au nom de la diversité de la gauche.
Comme attendu, le deuxième tour a accouché d'un résultat totalement différent du premier. Face au bloc de droite, c'est l'alliance de gauche qui a fini dans les cordes, échouant finalement à récupérer ce fameux troisième siège. Alors que Sylvie Bonvin-Sansonnens, cinquième avec 41'047 suffrages, et Jean-François Steiert, septième avec 40'317 suffrages, ont été élu.e.s, Valérie Piller Carrard a pris le huitième rang (39'545 voix), ne lui permettant pas de décrocher un strapontin. Sophie Tritten a fermé la marche en récoltant 36'262 voix. L'alliance de droite a donc triomphé, raflant cinq sièges. Les mieux élus ont été Didier Castella (52'847 voix) et Olivier Curty (51'653 voix), suivis par Romain Collaud (49'745 voix), qui a réussi son entrée à l'exécutif, et Jean-Pierre Siggen (44'185 voix), se remettant convenablement de sa déconvenue du premier tour. Cependant, le grand vainqueur de ce scrutin s'est nommé Philippe Demierre, élu avec 40'710 suffrages, permettant à l'UDC de faire son grand retour au Conseil d'État. Le parti socialiste a lui perdu un siège, dans la lignée de sa petite forme en terre fribourgeoises, après avoir cédé sa place au Conseil des États à la centriste Isabelle Chassot en septembre 2021. En fin de compte, selon la presse, les différentes stratégies partisanes ont fait une victime de choix: la représentation féminine, puisque l'on ne retrouve qu'une seule femme parmi les sept conseiller.ère.s d'État, comme lors de la législature précédente. Pour ce deuxième tour, la participation s'est montée à 41.38%, probablement dopée par la tenue des votations fédérales le même jour.