The Scot raced onto a long ball and brilliantly lobbed the onrushing Brad Jones to earn his side a first Barclays Premiership win in seven games.
Middlesbrough had made nine changes after their brilliant win over Steaua Bucharest on Thursday and their youthful-looking side had looked set to claim a goalless draw.
Middlesbrough boss Steve McClaren made nine changes from their exhilarating UEFA Cup semi-final win.
Massimo Maccarone, Mark Viduka and Chris Riggott - the goal heroes against Steaua on Thursday - were among those to make way as Boro began a run of four league games in nine days.
Top scorer Yakubu was restored to the starting line-up to lead the attack against Everton at the Riverside Stadium with Malcolm Christie alongside.
Everton brought in defender Alan Stubbs in place of suspended midfielder Tim Cahill.
Boro, playing their 60th game of the season, had an opportunity with just a minute on the clock but Ray Parlour shot over from distance.
Everton's only opening in the early stages came when Brad Jones flapped at a Phil Neville throw but Boro held firm.
Both sides had a player booked just before the interval with Parlour and Gary Naysmith punished for fouls.
Everton had the first chance after the restart when Beattie stabbed an effort wide from 18 yards.
The Toffees suffered a serious blow after 52 minutes when Wright was hurt in a collision with Christie, who had been stretching to reach a Yakubu ball. Boss David Moyes was forced to replace his luckless keeper with youngster Iain Turner.
The visitors clearly tried to raise the tempo as the game approached its conclusion and Simon Davies went close as he skipped into the area after a strong run.
McFadden put another long-range shot wide of target and substitute Kevin Kilbane was similarly wayward.
Yakubu twisted his way into good position to net an 86th-minute goal for Boro but slipped as he shot and curled his effort wide.
The home side paid for his waywardness as McFadden settled the match with a brilliant 89th-minute strike.