The Foxes winger saw a deflected 89th-minute shot sail over Boro ‘keeper Jason Steele and into the back of the net, shattering the hosts’ 100 per cent home record and giving Nigel Pearson’s side a third successive npower Championship win.
Despite being frustrated by City’s accomplished approach in the first half, Middlesbrough found themselves in front soon after half-time through Nicky Bailey’s spectacular long-range strike.
But Jamie Vardy’s third league goal of the season levelled matters just after the hour-mark, before Dyer completed the turnaround that lifted City to fifth in the Championship table.
It was a richly-deserved result for Pearson’s men, who finally saw the breaks go their way on their travels, after a series of hard luck stories so far this season.
Defensively determined, tactically adaptable in the middle of the park and creative in the final third, they fully justified Boro boss Tony Mowbray’s pre-match claim that they would be the hosts’ biggest test so far this season.
For a side looking for their first points on the road, particularly against hosts yet to drop any at home, City were impressively sharp early-on – energetic in their running and accurate in their passing. It didn’t take long for chances to materialise.
First Boro captain Jonathan Woodgate was forced to make a hurried clearance from Vardy as the Foxes striker looked to convert a low centre from David Nugent, then Andre Bikey raced across to block Nugent’s goal-bound shot after he had been slipped through by the outstanding Anthony Knockaert.
Making good use of the height and strength of Lukas Jutkiewicz to complement their tidy passing game, Boro remained a threat and Bailey fired an angled shot just wide from a Merouane Zemmama pass on 12 minutes.
But the Foxes continued to look the more likely to find a breakthrough. Nugent was within a foot of doing so just before the half-hour – scampering into the middle to side-foot Paul Konchesky’s low cross just wide after finding the full-back marauding down the left.
Vardy warmed the palms of Jason Steele soon after following a neat turn on the edge of the box, but the game was open enough to afford chances at either end.
Just before the break, Boro full-back George Friend rode a couple of challenges down the left before Wes Morgan slid in to block his shot inside the box.
It was the first time City had reached the interval in an away league game with a clean sheet intact. With Boro’s frustration growing, a quiet start to the second period would surely have put them in the driving seat.
Bailey ensured that didn’t happen when he took aim from fully 35 yards before hitting a swerving, dipping drive that sailed into Kasper Schmeichel’s top corner, with the Dane helpless to stop it.
A bolt from the blue from the men in red and they were within inches of doubling the lead within a minute. Justin Hoyte burst into space down the right, his early cross invited Jutkiewicz and the former Coventry striker turned his sliding effort against the post from six yards.
Having lost Ritchie De Laet to injury during the first half, Pearson’s options had already been reduced. He reacted with positive changes, introducing Andy King and Dyer from the bench as his side sought to regain control. Patient in possession, they struck back just after the hour-mark.
Ever the willing playmaker, Danny Drinkwater was typically calling the tune from a deep position, before Nugent pulled to the edge of the box to make room for a shot. It didn’t get past the first defender, nor did Dyer’s follow-up, but Vardy was sharp as a tack to smack in the loose ball.
It came at the heart of perhaps City’s most threatening spell. Suddenly there were blue shirts everywhere. Dyer darted into some space in the right side of the box, but shot wide with men in support. King’s quick feet then put Steele’s goal in his sights, but the Boro ‘keeper saved brilliantly.
By now, City were the dominant force, with Drinkwater dictating, King roaming and Knockaert scheming. The Frenchman reeled in King’s cross-field ball on 73 minutes, darted into the box and forced Steele to push his shot over. From the resulting Knockaert corner, former Boro man Sean St. Ledger watched Steele push away again from his towering header with a genuinely world class save.
Emmanuel Ledesma might have done better than shoot straight at Schmeichel from fellow sub Luke Williams’ low cross 10 minutes from time.
But Pearson’s side secured the three points their efforts over the 90 minutes fully merited, when Dyer latched onto Knockaert’s pass, before cutting in off the right and seeing his shot loop up off a defender and over the stranded Steele.
Middlesbrough (4-4-1-1): Steele; Hoyte, Woodgate (c) (Hines 37), Bikey, Friend; McEachran, Leadbitter, Thomson (Ledesma 66), Bailey; Zemmama (Williams 63); Jutkiewicz.
Unused subs: Leutwiler, Arca, Smallwood, Haroun.
Goals: Bailey 50
City (4-2-3-1): Schmeichel; De Laet (Moore 28), Morgan (c), St. Ledger, Konchesky; James (King 56), Drinkwater; Vardy, Knockaert, Marshall (Dyer 61); Nugent.
Unused subs: Logan, Whitbread, Waghorn, Futacs.
Goals: Vardy 62, Dyer 89
Attendance: 15,679 (918 away)
Referee: Andy Madley (West Yorkshire)