A mis-kick from Negredo squandered an early chance after he was set up with a low cross from the right from Albert Adomah and Boro were soon after on the back foot.
Valdes turned a low shot from Jordan Ayew round for a corner from which a Lauren Bacuna cross picked out Nathan Baker and a simple header at the back post put the home side one up with 14 minutes played.
Boro were undone again with a low pass threaded through to Alan Hutton who saw a low, hard cross cut out by Valdes.
Villa, just eight days away from the start of their season, had won five of the six friendlies leading in to this game and they looked sharp.
A neat ball chipped over the top by Rudy Gestede set Ayew, Valdes and Ben Gibson off in a chase. Ayew just got their first before the three crashed into each other and the ball hit the side netting.
Aly Cissokho caused plenty problems down the Villa left and more often than not Boro had their work cut out defensively.
Two corners in quick succession early in the second half suggested Villa were in no mood to ease off and it wasn't until 10 minutes after the restart that Viktor Fischer cracked a 20-yard shot towards goal and Pierluigi Gollini was forced into a save.
That proved to be a sighter as on the hour Fischer shot low from the edge of the box, Gollini saved at full-stretch away to his left and Alvaro Negredo followed up to tuck home from close range.
With a quarter-of-an-hour remaining Boro edged in front when a flowing move cut Villa open through the middle and Viktor Fischer curled home low from just inside the penalty area.
Two minutes and four changes later Boro went further in front with a move started and finished by Jordan Rhodes whose first touch got the move in motion and his second rounded it off as he tucked in at the back post.
It should have been four a few minutes later when three of Boro's subs combined. First David Nugent mis-kicked an Adam Reach cross then Cristhian Stuani fired just over from 12 yards.
Aston Villa: Gollini; Baker (Amavi 87), Bacuna (Green 75), Gestede, Elphick (Capt.), Westwood, Ayew, Hutton, Gardner (Tshibola 46), Cissokho (Clark 87), Grealish. Subs: Steer (gk); Bennett, Okore, Sinclair, Sanchez.
Boro: Valdes; Nsue, Fry, Gibson, Friend (Capt.), Adomah (Stuani 75), Clayton, De Roon (Forshaw 70), Downing (Reach 75), Fischer (Nugent 75), Negredo (Rhodes 75). Subs: Konstantopoulos (gk); Barragan, Baptiste, De Pena, De Sart.
Referee Steve Martin
Attendance 14,863 (869 Boro)