An election was held on November 3, 2020 to elect 25 members to Montana's Senate. The election coincided with elections for other offices, including the presidency, U.S Senate, U.S. House of Representatives, governorship, and state house. The primary election was held on June 2, 2020
Results summary.
Summary of the November 3, 2020 Montana Senate election results
Close races.
Districts where the margin of victory was under 10%:
Detailed results.
Districts 2–25.
District 2.
Incumbent Republican Dee Brown had represented the 2nd district since 2013. Brown was term-limited and could not seek re-election. State Representative Carl Glimm won the open seat.
! scope="col" colspan="2" style="width: 15em" |Party
! scope="col" style="width: 17em" |Candidate
! scope="col" style="width: 5em" |Votes
! scope="col" style="width: 3.5em" |%
! colspan="3" style="text-align:right;" | Total votes
District 3.
Incumbent Republican Keith Regier had represented the 3rd district since 2017.
! scope="col" colspan="2" style="width: 15em" |Party
! scope="col" style="width: 17em" |Candidate
! scope="col" style="width: 5em" |Votes
! scope="col" style="width: 3.5em" |%
! colspan="3" style="text-align:right;" | Total votes
District 6.
Incumbent Republican Albert Olszewski had represented the 6th district since 2017. Olszewski unsuccessfully sought the Republican nomination for Governor. Term-limited state representative and state House Speaker Greg Hertz won the open seat.
! scope="col" colspan="2" style="width: 15em" |Party
! scope="col" style="width: 17em" |Candidate
! scope="col" style="width: 5em" |Votes
! scope="col" style="width: 3.5em" |%
! colspan="3" style="text-align:right;" | Total votes
District 7.
Incumbent Republican Jennifer Fielder had represented the 7th district since 2013. Fielder was term-limited and ran successfully for a seat on the Montana Public Service Commission.
! scope="col" colspan="2" style="width: 15em" |Party
! scope="col" style="width: 17em" |Candidate
! scope="col" style="width: 5em" |Votes
! scope="col" style="width: 3.5em" |%
! colspan="3" style="text-align:right;" | Total votes
District 10.
Incumbent Steve Fitzpatrick had represented the 10th district since 2017.
! scope="col" colspan="2" style="width: 15em" |Party
! scope="col" style="width: 17em" |Candidate
! scope="col" style="width: 5em" |Votes
! scope="col" style="width: 3.5em" |%
! colspan="3" style="text-align:right;" | Total votes
District 15.
Incumbent Republican Ryan Osmundson had represented the 15th district since 2017.
! scope="col" colspan="2" style="width: 15em" |Party
! scope="col" style="width: 17em" |Candidate
! scope="col" style="width: 5em" |Votes
! scope="col" style="width: 3.5em" |%
! colspan="3" style="text-align:right;" | Total votes
District 16.
Incumbent Democrat Frank Smith had represented the 16th district since 2017. Smith chose not to seek re-election, and instead successfully ran for a seat in the Montana House.
! scope="col" colspan="2" style="width: 15em" |Party
! scope="col" style="width: 17em" |Candidate
! scope="col" style="width: 5em" |Votes
! scope="col" style="width: 3.5em" |%
! colspan="3" style="text-align:right;" | Total votes
District 17.
Incumbent Republican Mike Lang had represented the 17th district since 2017.
! scope="col" colspan="2" style="width: 15em" |Party
! scope="col" style="width: 17em" |Candidate
! scope="col" style="width: 5em" |Votes
! scope="col" style="width: 3.5em" |%
! colspan="3" style="text-align:right;" | Total votes
District 18.
Incumbent Republican Steve Hinebauch had represented the 18th district since 2017.
! scope="col" colspan="2" style="width: 15em" |Party
! scope="col" style="width: 17em" |Candidate
! scope="col" style="width: 5em" |Votes
! scope="col" style="width: 3.5em" |%
! colspan="3" style="text-align:right;" | Total votes
District 21.
Incumbent Republican Jason Small had represented the 21st district since 2017.
! scope="col" colspan="2" style="width: 15em" |Party
! scope="col" style="width: 17em" |Candidate
! scope="col" style="width: 5em" |Votes
! scope="col" style="width: 3.5em" |%
! colspan="3" style="text-align:right;" | Total votes
District 23.
Incumbent Republican Roger Webb had represented the 23rd district since 2013. Webb was term-limited and could not seek re-election. Former state representative Tom McGillvray won the open seat.
! scope="col" colspan="2" style="width: 15em" |Party
! scope="col" style="width: 17em" |Candidate
! scope="col" style="width: 5em" |Votes
! scope="col" style="width: 3.5em" |%
! colspan="3" style="text-align:right;" | Total votes
District 25.
Incumbent Democrat Jen Gross had represented the 25th district since 2017.
! scope="col" colspan="2" style="width: 15em" |Party
! scope="col" style="width: 17em" |Candidate
! scope="col" style="width: 5em" |Votes
! scope="col" style="width: 3.5em" |%
! colspan="3" style="text-align:right;" | Total votes
Districts 26–47.
District 26.
Incumbent Democrat Margaret MacDonald had represented the 26th district since 2017. She ran for re-election to a 2nd term, but was defeated by Republican Chris Friedel.
! scope="col" colspan="2" style="width: 15em" |Party
! scope="col" style="width: 17em" |Candidate
! scope="col" style="width: 5em" |Votes
! scope="col" style="width: 3.5em" |%
! colspan="3" style="text-align:right;" | Total votes
District 28.
Incumbent Republican Tom Richmond had represented the 28th district since 2017. Former Public Service Commissioner and state representative Brad Molnar defeated Richmond in the Republican primary.
! scope="col" colspan="2" style="width: 15em" |Party
! scope="col" style="width: 17em" |Candidate
! scope="col" style="width: 5em" |Votes
! scope="col" style="width: 3.5em" |%
! colspan="3" style="text-align:right;" | Total votes
District 31.
Incumbent Democrat Mike Phillips had represented the 31st district since 2013. Phillips was term-limited and could not seek re-election. State Representative Christopher Pope won the open seat.
! scope="col" colspan="2" style="width: 15em" |Party
! scope="col" style="width: 17em" |Candidate
! scope="col" style="width: 5em" |Votes
! scope="col" style="width: 3.5em" |%
! colspan="3" style="text-align:right;" | Total votes
District 35.
Incumbent Republican Scott Sales had represented the 35th district and its predecessors since 2013. Sales was term-limited and could not seek re-election, he instead ran Secretary of State.
! scope="col" colspan="2" style="width: 15em" |Party
! scope="col" style="width: 17em" |Candidate
! scope="col" style="width: 5em" |Votes
! scope="col" style="width: 3.5em" |%
! colspan="3" style="text-align:right;" | Total votes
District 36.
Incumbent Republican Jeffrey Welborn had represented the 36th district since 2017. 
! scope="col" colspan="2" style="width: 15em" |Party
! scope="col" style="width: 17em" |Candidate
! scope="col" style="width: 5em" |Votes
! scope="col" style="width: 3.5em" |%
! colspan="3" style="text-align:right;" | Total votes
District 37.
Incumbent Democrat Minority Leader Jon Sesso had represented the 37th district since 2013. Sesso was term-limited and could not seek re-election.
! scope="col" colspan="2" style="width: 15em" |Party
! scope="col" style="width: 17em" |Candidate
! scope="col" style="width: 5em" |Votes
! scope="col" style="width: 3.5em" |%
! colspan="3" style="text-align:right;" | Total votes
District 38.
Incumbent Democrat Edith McClafferty had represented the 38th district since 2017.
! scope="col" colspan="2" style="width: 15em" |Party
! scope="col" style="width: 17em" |Candidate
! scope="col" style="width: 5em" |Votes
! scope="col" style="width: 3.5em" |%
! colspan="3" style="text-align:right;" | Total votes
District 39.
Incumbent Democrat Gene Vuckovich had represented the 39th district since 2011. Vuckovich was term-limited and could not seek re-election.
! scope="col" colspan="2" style="width: 15em" |Party
! scope="col" style="width: 17em" |Candidate
! scope="col" style="width: 5em" |Votes
! scope="col" style="width: 3.5em" |%
! colspan="3" style="text-align:right;" | Total votes
District 40.
Incumbent Republican Terry Gauthier had represented the 40th district since 2017.
! scope="col" colspan="2" style="width: 15em" |Party
! scope="col" style="width: 17em" |Candidate
! scope="col" style="width: 5em" |Votes
! scope="col" style="width: 3.5em" |%
! colspan="3" style="text-align:right;" | Total votes
District 44.
Incumbent Republican Majority Leader Fred Thomas had represented the 44th district since 2013. Thomas was term-limited and could not seek re-election. Representative Theresa Manzella won the open seat.
! scope="col" colspan="2" style="width: 15em" |Party
! scope="col" style="width: 17em" |Candidate
! scope="col" style="width: 5em" |Votes
! scope="col" style="width: 3.5em" |%
! colspan="3" style="text-align:right;" | Total votes
District 45.
Incumbent Democrat Dick Barrett had represented the 45th district and its predecessors since 2013. Barrett was term-limited and could not seek re-election.
! scope="col" colspan="2" style="width: 15em" |Party
! scope="col" style="width: 17em" |Candidate
! scope="col" style="width: 5em" |Votes
! scope="col" style="width: 3.5em" |%
! colspan="3" style="text-align:right;" | Total votes
District 46.
Incumbent Democrat Sue Malek had represented the 46th district since 2013. Malek was term-limited and could not seek re-election.
! scope="col" colspan="2" style="width: 15em" |Party
! scope="col" style="width: 17em" |Candidate
! scope="col" style="width: 5em" |Votes
! scope="col" style="width: 3.5em" |%
! colspan="3" style="text-align:right;" | Total votes
District 47.
Incumbent Republican Dan Salomon had represented the 47th district since 2017.
! scope="col" colspan="2" style="width: 15em" |Party
! scope="col" style="width: 17em" |Candidate
! scope="col" style="width: 5em" |Votes
! scope="col" style="width: 3.5em" |%
! colspan="3" style="text-align:right;" | Total votes