Daryl Murphy had given Town the lead on 32 minutes when he finished with style and the Republic of Ireland international had a big hand in Blues’ second goal on the hour mark, his cross from the left eventually powered in by McGoldrick.
Tim Hoogland gave Town an anxious last five minutes when he cut in from the right and saw his shot deflected past Dean Gerken and the Cottagers pressed for an equaliser in the dying moments but Blues held on for the three points.
Balint Bajner was handed his debut for Town after successive goals in pre-season, with McGoldrick appearing in Blues’ Championship squad for the first time since February after recovering from injury.
Town started on the front foot and Jesse Joronen was at full stretch to tip Christophe Berra’s header over the bar, then Luke Hyam was just wide with a right foot effort from the edge of the box.
Fulham responded with a break down the right that released Chris David but he dragged his shot wide of Gerken’s goal.
Cole Skuse was inches away from his first goal for Blues, his dipping volley going just over the bar as Town pressed for the opener but at the other end, it was the Cottagers who nearly provided it, David’s shot not gathered cleanly by Gerken but the ‘keeper made amends by blocking Moussa Dembele’s follow up effort.
Skuse wasn’t far away with another effort before Blues got the breakthrough on the half hour mark, Hyam released Murphy and the striker showed a turn of pace before beating Joronen from inside the box.
Murphy sent a 20 yarder just wide after good work by Tyrone Mings, before Blues made a change just before the break with Bajner making way for McGoldrick.
Town’s top scorer from last season had the first chance of the second-half but his left foot effort was blocked by Nikolay Bodurov.
Fulham threatened an equaliser when Konstantinos Stafylidis sent a left foot rocket goalwards but the strike had too much height.
Ross McCormack made way for Cauley Woodrow, with the Londoners having made a first change at the break with David replaced by Thomas Eisfeld.
Town took a stranglehold on the game on the hour, Murphy did superbly to carve out space to cross from the left, Jay Tabb almost got in at the near post but the ball fell invitingly for McGoldrick who made no mistake from 15 yards.
Anthony Wordsworth replaced Skuse on 70 minutes, Patrick Roberts on for Shaun Hutchinson in a third change for the visitors.
Dembele was high and wide with a left foot drive from distance, Roberts then finding Eisfeld with a clever ball in the box but Luke Chambers reacted quickly to clear the danger.
Chambers showed a winger’s touch moments later, a twist away from his marker and then a perfect cross but Wordsworth couldn’t keep his header down.
Fulham got back in the game on 85 minutes, Hoogland cutting in and his shot taking a deflection to wrong-foot Gerken.
Roberts looked odds on to find an equaliser two minutes later but Town smothered the danger, then Christophe Berra was in the right place to stop Eisfeld as Blues made it to the final whistle with the advantage intact.