Glasgow (9) 16
Try: Fa'atau Con: Parks Pens: Parks 3
Toulouse (7) 22
Try: Skrela 2, Kelleher, Jauzion Cons: Skrela 2 Drop goals: Kunavore
Lome Fa'atau's late try secured Glasgow a losing bonus point
Glasgow's Heineken Cup hopes were left hanging by a thread as Toulouse shook off an error-strewn first half to win.
Dan Parks kicked three penalties to give the Warriors a 9-7 lead at the interval, with David Skrela's converted try keeping the visitors in touch.
Toulouse scored 15 unanswered points after the break with tries from Skrela, Byron Kelleher and Yannick Jauzion and a Maleli Kunavore drop-goal.
Lome Fa'atau's late try secured Glasgow a losing bonus point.
The Warriors now need to win all their remaining games to have a realistic chance of making the last eight.
The visitors were forced into one change from the team named in midweek, Kunavore deputising for France centre Florian Fritz.
It was the sides' third meeting in the competition, Toulouse winning both pool encounters on the way to the last of their three titles in 2004-05.
But it was Glasgow who struck first after a clever lineout led to a sixth-minute penalty in front of the posts.
Parks, back at fly-half after injury, duly converted.
Warriors boss Sean Lineen axed four of his forwards following last week's defeat at Newport Gwent Dragons and it initially paid off as his new-look pack tore into the visitors.
They were rewarded with a penalty which Parks shanked, but the Scotland star made up for it minutes later with one from halfway.
Thom Evans should have punished Toulouse further with a try but the fit-again wing dropped the ball under pressure with the line at his mercy.
Then from nowhere, Glasgow fell apart at a scrum and Skrela was afforded the freedom of Firhill to run in under the posts.
The fly-half's conversion gave Toulouse a lead that had barely looked possible.
Only a series of last-gasp tackles prevented try number two before Glasgow edged in front again through another Parks penalty.
Toulouse looked to have shaken off their early stupor, though wing Maxime Medard emulated Evans by spilling a pass yards from an unguarded line shortly before the interval.
The second half was less than three minutes old when Kunavore justified his late call-up with a close-range drop-goal to put Toulouse a point ahead.
That immediately became six when the French side broke through down the left, Patricio Albacete releasing Kelleher for the touchdown but Skrela failed to convert.
Lineen responded by making two changes up front, Moray Low and Kelly Brown entering the fray.
But it was not enough to restore Glasgow's first-half intensity, their malaise summed up when Jauzion ran straight through the middle to score Toulouse's third try.
Skrela converted but then missed a 40-metre penalty to leave the visitors 13 points ahead.
A mazy run from Evans saw Glasgow get within inches of scoring their first try but the visitors' defence held firm.
It took three terrible errors from Toulouse to allow Fa'atau to chase a loose ball almost the length of the field and score.
Parks converted to take Glasgow back within six points with less than five minutes remaining but it was too late.
Glasgow coach Sean Lineen: "I thought the guys showed what playing for Glasgow's all about.
"I thought each and every one of them put their hands up and showed the passion and pride of playing for Glasgow Warriors this season.
"Toulouse showed their class when they went through the gears at the beginning of the second half.
"The tries were a little bit soft that we gave away but the guys never stopped trying. We scored a great try and could have had a couple more.
"So really proud of the effort tonight."
Glasgow: Stortoni, Faatau, M. Evans, Morrison, T. Evans, Parks, McMillan, Tckachuk, Hall, Kalman, Turner, Kellock, Vernon, Barclay, Beattie. Replacements: Jackson for Stortoni (63), Henderson for M. Evans (53), Gregor for McMillan (63), Low for Tckachuk (46), McArthur for Hall (69), Barker for Turner (69), Brown for Vernon (46).
Toulouse: Poitrenaud, Ahotaeiloa, Kunavore, Jauzion, Medard, Skrela, Kelleher, Human, Servat, Perugini, Pelous, Albacete, Nyanga, Dusatoir, Sowerby. Replacements: Heymans for Poitrenaud (69), Elissalde for Medard (73), Poux for Human (54), Millo-Chulski for Pelous (60), Bouihlou for Nyanga (55), Maka for Dusatoir (67). Not Used: Vernet Basualdo.
Ref: Alan Lewis (Ireland).