Preston North End started 2020 as they had finished 2019 with a Deepdale defeat.
After losing 2-0 to Reading on Sunday, Middlesbrough inflicted the same scoreline on them in their New Year's Day clash.
They were toothless going forward, far too predictable with their approach towards the box and rarely looked like scoring.
Boro took a 40th minute lead through Rudy Gestede's acrobatic finish after North End had twice failed to clear with a free-kick into the box.
It was an advantage they increased in the 62nd minute when PNE centre-half Ben Davies poked the ball into his own net as he tried to stop Ashley Fletcher latching on to a Gestede knock on.
This was the third time in the last four games that the Lilywhites had failed to find the net. and they struggled against a well organised and disciplined Middlesbrough back line.
Alex Neil had made five changes to the side which lost against Reading, with Darnell Fisher, Patrick Bauer, Paul Gallagher, Tom Barkhuizen and David Nugent returning to the starting XI.
North End lined up 4-2-3-1, Fisher resuming at right-back and Bauer in the centre of defence.
Gallagher partnered Ben Pearson in midfield, with Nugent leading the attack - flanked by Barkhuizen and Sean Maguire.
It looked the strongest side available to Neil but rarely did it fire over the 90 minutes.
Early on, PNE goalkeeper Declan Rudd tipped a shot from Fletcher behind but the whistle went for a raised boot from the Boro striker.
When Gallagher's smart pass opened up the visitors' defence, Barkhuizen got away down the right-wing and drove in a low cross which keeper Aynsley Pears gloved behind at the near post.
A few times Boro found space down the sides of the North End centre-halves but didn't force Rudd into action from any of them,.
Gallagher's shooting radar was somewhat off kilter in the first half, with him putting three efforts high or wide from the edge of the box.
The visitors took the lead five minutes before the interval.
Marvin Johnson delivered a free-kick from the right channel over the far post, Dael Fry holding off Bauer at the far post to return it into the middle.
George Saville had a shot which was blocked, the ball spinning up for Gestede who hooked an acrobatic finish into the net from six yards.
North End lost the services of Bauer at half-time, presumably to the effects of illness which had kept him out of the last two games. Paul Huntington replaced him in a like-for-like swap.
Seven minutes into the second half, Gestede met a corner from the right and headed across goal and well wide.
Some better approach play from PNE fashioned a chance in the 57th minute, the work across the pitch for Fisher to slip the ball into the path of Pearson.
The midfielder lifted a cross into the box, Nugent getting up to send a header across goal and just wide.
Jayden Stockley replaced Alan Browne just after that, Stockley going up front with Nugent dropping off into the No.10 role behind him.
Soon after the change it was a tale of two chances - one at each end - which saw the game move further in Boro's favour.
Barkhuizen got his head to a Fisher cross but flicked it the wrong wide of the far post.
Barely 60 seconds later and Boro went 2-0 ahead with a helping hand from North End.
Gestede flicked on a high ball towards the PNE box which Davies twice attempted to clear under pressure from Fletcher but succeeded only in poking the ball past Rudd who had come out to try and deal with the danger.
Boro were close to as third when Gestede send a full-bloodied volley just wide of the target.
In the 67th minute, a Gallagher corner was cleared as far as Pearson 20 yards out, the midfielder shooting first-time and forcing Pears to push the ball behind at the foot of the post.
With North End having to commit numbers forward that inevitably left space for Boro to play on the counter attack.
Rudd made good save to tip substitute Paddy McNair's curling cross over the bar, then the keeper kept out Gestede's close-range header.
With six minutes of the 90 left, Gallagher whipped in a free-kick from the right which Stockley got underneath and headed over the bar.
PNE: Rudd, Fisher, Bauer (Huntington 46), Davies, Hughes, Pearson, Gallagher, Barkhuizen, Browne (Stockley 58), Maguire, Nugent (Harrop 65). Subs (not used): Ledson, Bodin, Potts, Ripley.
Boro: Pears, Ayala (McNair 34), Fry, Howson, Spence (Coulson 70), Saville, Clayton, Tavernier (Wing 90), Johnson, Fletcher, Gestede. Subs (not used): Wood, O'Neill, Walker, Mejias.
Referee: John Brooks (Leicestershire)
Attendance: 13,824 (1,820 away)