The 21-year-old ran from deep before firing a low shot to score in the 23rd minute and the visitors doubled their lead in the 88th when Fabian Schar converted a penalty.
The win ensured a 12th place finish for Newcastle, who moved up from 15th in the standings going into the final day.
He is the second Newcastle player to score in seven straight Premier League appearances after Alan Shearer in 1996.
Fulham, who got a loud cheer from the first crowd at Craven Cottage this season despite already being relegated, finished the season without a win in their final 10 league games.
They came 18th with 28 points, 11 points adrift of fourth-bottom Burnley.
Willock was close to a second goal early in the second half but Fulham were the stronger of the two sides after the break and Carvalho should have equalised in the 56th minute.
He stole an errant back pass from Willock but, with just goalkeeper Martin Dubravka to beat, blasted wide in a horror miss to the frustration of the home fans.