Huddersfield dominated the opening stages and wing Halsall broke the deadlock, running in unopposed in the left corner to finish off a slick move before Brendan Hands’ try pulled Toulouse level.
Influential half-back Jake Shorrocks limped off for the home side with a worrying-looking injury and, soon after, the Giants restored their advantage through Halsall’s second, an acrobatic finish in the corner.
Joe Greenwood extended the visitors’ advantage, receiving a short ball from Harry Rushton to power over from close range, before Connor Wrench burst through on the attacking right edge for Huddersfield’s fourth try before half-time.
The Giants had to play half of the second period with 12 men, firstly after Tristan Powell was shown a yellow card, and then because of Taane Milne’s professional foul 16 minutes later, but they saw out the match comfortably and added to the scoreline through a George Flanagan penalty kick.
Toulouse’s top try-scorer this season Mathieu Jussaume pulled a try back late on but it proved to be just a consolation as Flanagan slotted a second penalty kick with 30 seconds remaining.
Toulouse: Polselli; Laguerre, Tropis, Jussaume, Ulberg; Lacans, Shorrocks; Butler, Hands, Roumanos, O’Kane, Grossemy, Cator.
Interchanges: Marion, Chan, Belmas, Toleafoa.
Huddersfield: Flanagan; Halsall, Wrench, Gagai, Milne; Clune, Lolohea; Rogers, Woolford, King, Hewitt, Dunford, Rushton.
Interchanges: Powell, Greenwood, Cozza, Geyer.
Sin-bin: Powell (48 mins), Milne (64 mins).
Referee: Ryan Cox.