Roar defender Mohamed Adnan was ruled to have brought down Kang Min-soo in the area in the 72nd minute, with Ulsan captain Kwak Tae-hwi burying the spot-kick.
The K-League team opened the scoring after 10 minutes at the Suncorp Stadium through Colombian midfielder Juan Velez, who dispossessed Mitch Nichols in the Brisbane half and turned quickly to lash past Michael Theoklitos from 25 yards out.
Full-back Shane Stefanutto equalised for Roar with a volley from a tight angle in the 25th minute and substitute Luke Brattan struck the crossbar just before Ulsan won the decisive spot-kick.
Ulsan are second in Group F on goal difference behind FC Tokyo, who were 3-0 winners over Beijing Guoan.
Tokyo forged ahead through Kazuma Watanabe after six minutes, and they added a second just before the break from Yohei Otake.
Tatsuya Yazawa made sure of the win with a goal in the 57th minute, just six minutes after coming on as substitute.
Brisbane and Beijing are now almost certainly out of the running for the knock-out stage, trailing Tokyo and Ulsan by six points with two games to go.
Guangzhou Evergrande claimed top spot in Group H thanks to a 3-1 win at home to J.League champions Kashiwa Reysol.
Argentinian midfielder Dario Conca gave the Chinese Super League side an eighth-minute lead but Hiroki Sakai pulled Kashiwa level five minutes after half-time.
However, Guangzhou moved on to seven points from four games thanks to a double from Brazilian forward Muriqui (58 and 84).
South Korean champions Jeonbuk Motors are a point behind thanks to a 3-2 home victory over Thai side Buriram United.
Frank Ohandza put the visitors in front on the 20 minute mark but a quickfire double from former Middlesbrough forward Lee Dong-gook (25 and 27) helped Motors take the upper hand. Ohandza levelled again (57) but Park Won-jae grabbed the winner nine minutes from time.
In Group D, a last-minute equaliser denied Piroozi the win they needed to be sure of progression as they were held 1-1 by the 10 men of Al Gharafa.
The visitors, winless and all but out of contention, were down to 10 when Farhad Majidi collected a second yellow card in the 75th minute, and the hosts finally gave the 90,000 home fans the goal they craved when Ali Karimi raced through the defence to score with five minutes left.
That should have been the winner, but Lawrence Quaye grabbed a leveller at the death.
Perspolis stay top of the group, but their lead is down to two points as Al Hilal closed in with a 2-1 win over Al-Shabab.
But they did it the hard way against their struggling visitors, who led after 29 minutes through Kieza de Almeida.
Youssef El Arabi levelled a minute before half-time, and then grabbed the winner midway through the second half, with Al Hilal surviving the 87th-minute dismissal of Sultan Al-Bishi for a second bookable offence to take all three points.
In Group B, Al-Ittihad saw their perfect start ended in a goalless draw away to Bani Yas, but the result was not enough for the hosts to hold on to second place as they fell behind Pakhtakor Tashkent, 1-0 winners at Al Arabi.
Temurkhuja Abdukholiqov got the goal four minutes before the break and, although Pakhtakor played the final 15 minutes with 10 men after Oybek Kilichev was shown a second yellow card, they hung for a win that moves them on to seven points, three behind Al-Ittihad and two above Bani Yas.
Tuesday's AFC Champions League Results
Bani Yas 0-0 Al Ittihad
Al Arabi 0-1 Pakhtakor
Persepolis 1-1 Al Gharafa
Al Hilal 2-1 Al Shabab
Brisbane Roar 1-2 Ulsan Hyundai
FC Tokyo 3-0 Beijing Guoan
Jeonbuk Hyundai Motors 3-2 Buriram United
Guangzhou Evergrande 3-1 Kashiwa Reysol