Salesi Finau's try had helped Bath to a 13-3 lead but when scrum-half Nick Walshe was sin-binned in the second half, the Falcons began a fight-back.
Ollie Phillips went over as the visitors piled on the pressure and went 18-13 ahead after Anthony Elliot's try.
But Best squeezed over in the corner in the dying minutes to secure a Bath win.
Newcastle director of rugby Rob Andrew
"I thought we were the better team even after an average first half when we were slow out of the blocks. "We should have won it and it was hugely disappointing not to have closed it down.
"Over the last few months we've been winning those sorts of games. We'll get our internationals back now and we look forward to the grounds drying up."
Bath: Perry; Higgins, Crockett, Maddock, Finau; Malone, Walshe; Flatman, Dixon, Bell; Hudson, Short; Beattie, Scaysbrook, Fea'unati.
Replacements: Delve for Scaysbrook (51), Fidler for Fea'unati (73).
Not Used: Hawkins, Loader, Williams, Dunne, Best.
Sin Bin: Walshe (51).
Newcastle: Burke; Phillips, May, Mayerhofler, Elliot; Walder, Grindal; Ward, Long, Morris; Perry, Parling; Finegan, Woods, Buist.
Replacements: Charlton for Grindal (64), Williams for Morris (57), Grimes for Perry (66), McCarthy for Finegan (57), Harris for Woods (57).
Not Used: Thompson, Shaw.
Att: 10,600
Ref: M Fox (RFU).