The restrictions would not apply in cases of rape or incest, or when abortion is considered necessary to save the life of the mother.
The Senate needed 60 votes to end debate on the legislation. The final tally was 51-46.
The bill was passed by the House in October and Republicans in the Senate had hoped to put Democratic colleagues who hail from red states on the record with the controversial vote.
"This afternoon, every one of us will go on the record on this issue," Senate Majority Leader Mitch McConnell said Monday afternoon.
Three Democrats voted with Republicans in support of the bill: Sens. Joe Manchin, Bob Casey, and Joe Donnelly. Manchin and Donnelly are both up for re-election this year and they both represent states that voted for President Donald Trump, so they ran the risk of alienating anti-abortion constituents.
Democrats slammed Republicans for wasting time on a "politically-motivated, partisan bill" just days after Congress voted to re-open the government.
Sen. Patty Murray, D-Wash., called the bill unconstitutional, and an extreme attack on women's reproductive health.
"I hope this time Republicans listen. I hope they will stop trying to pretend that they are in any way qualified to interfere with decisions that a woman has the Constitutional right to make on her own," Murray said Monday on the Senate floor. Murray is the ranking member of the Senate's Health, Education, Labor and Pensions Committee.
Sen. Lindsey Graham, R-S.C., authored the bill that would have prohibited abortion after 20 weeks -- the point at which he says scientific evidence shows unborn children can feel pain, according to a press release from Graham's office.
“We didn’t win the vote today, but we won hearts and minds," Graham said in a statement after the bill stalled in the Senate. "I have not given up this fight and I hope you will not either. Together we must press on and continue pushing for protection of the unborn."
Vice President Mike Pence and President Trump issued statements expressing disappointment in the vote. Trump called on the Senate to pass the bill when he addressed the March for Life anti-abortion march via satellite earlier this month.
"When I addressed the 45th annual March for Life, I called on the Senate to pass the Pain-Capable Unborn Child Protection Act, important legislation that would protect our most vulnerable," Trump said in a statement. "It is disappointing that despite support from a bipartisan majority of U.S. Senators, this bill was blocked from further consideration."
I am disappointed that tonight, 46 Senators voted against a motion that would have respected the majority of Americans' convictions- including those of @POTUS Trump- by refusing to advance a bill that would restrict abortions on babies when they are capable of feeling pain. pic.twitter.com/9O5ubm35B7— Vice President Mike Pence (@VP) January 30, 2018