Ismaila Sarr's double and Troy Deeney's strike 18 minutes from time ended Liverpool's hopes of romping to a first league title in 30 years with an unbeaten season as they lost in the league for the first time since January 2019.
Jurgen Klopp's men still enjoy a 22-point lead at the top of the table, but their sluggish return from a two-week winter break earlier this month was finally punished.
After single-goal victories over struggling Norwich and West Ham either side of a Champions League defeat at Atletico Madrid, Liverpool were comprehensively beaten at Vicarage Road.
A 55-point gap separated the sides before kick-off, but the out-of-sorts visitors failed to muster even a single effort on goal in the first 45 minutes.