The Hornets moved to within five points of leaders Norwich as well as establishing a 12-point lead over third-place Brentford.
Reading remain in the final play-off slot but are in danger of being bumped down by Bournemouth, who now have two games in hand.
Watford were unchanged from the side that drew 1-1 at Middlesbrough on Monday while Reading opted to leave top scorer Lucas Joao on the bench despite a goal in the 3-1 win at home to Derby that day.
The game's first chance, after two minutes of silence to mark the passing of Prince Philip, was created by Watford in the fifth minute.
Sarr decided to have a go himself six minutes later and was rewarded with a high-quality opener. The winger was involved in hustling Reading out of possession but still had plenty to do when he accepted Kiko Femenia's pass on the right of the box. The Senegal star cut inside at pace before planting a curling left-footed effort beyond goalkeeper Rafael Cabral.
Sarr was back to double the lead 77 seconds later after a combination of Nathaniel Chalobah and Philip Zinckernagel had dispossessed Lewis Gibson. The angle was tight for the 23-year-old but his rising drive was too rapid for Rafael even to touch.
George Puscas passed up a great opportunity to halve the deficit when he hit a post rather than a gaping net from close range. Michael Olise ran at the Watford defence and slipped Yakou Meite in on the right but somehow his team-mate could not finish.
Sarr soon had the ball in the net at the other end but a raised flag denied him a hat-trick before half-time.
There was another let-off for Watford just before the break when William Troost-Ekong gave the ball straight to Meite, who could only fire into the side-netting.
Reading made a strong start to the second period but saw Andy Rinomhota booked for hacking Sarr down to stop a swift counter-attack.
Lucas Joao replaced Puscas just after the hour mark as the Royals attempted to turn some encouraging approach play into goals.
Watford were forced into a change at the back when Troost-Ekong was hurt, with Craig Cathcart coming on for the final 20 minutes.
Zinckernagel headed a rare Hornets chance wide and then blasted a much better one over as the hosts remained unable to kill the game off.
Another sub, Sone Aluko, was denied by a smart save by Bachmann as time finally ran out for Reading.