Connacht completed their Heineken Cup Pool Three campaign by coming from behind to beat bottom side Zebre.
Dan Parks fired over three penalties and a drop-goal to give the hosts a 12-6 advantage at half-time in Galway.
A penalty try seemed to put Connacht in control but Zebre fought back with Daniel Halangahu's fourth penalty, followed by a Ruggero Trevisan try.
Halangahu then kicked Zebre in front but fly-half Parks won it for Connacht with a penalty and drop-goal.
The rain abated before kick-off and the first sign of a Connacht threat came with a 40-metre burst from Robbie Henshaw, who has been called up to the extended Ireland squad.
The teenage full-back's raid forward was a rare moment of excitement in a slow first quarter that lacked any real spark and tempo.
A firm long range penalty strike from Parks edged the hosts ahead, but they were penalised for not rolling away from the restart, allowing Halangahu to bring the Italians level.
Parks answered back with a neatly slotted kick from inside the 22 as Connacht improved their accuracy, using their strong set piece game to dictate proceedings.
Although captain Nathan White was part of a commanding front row, they were unable to hammer home that advantage and relied again on the boot of Parks.
The former Scotland international drilled over a drop-goal while he had a penalty advantage to move Connacht 9-3 clear.
But Connacht's own errors gave the Italians the opportunity hit back swiftly, and Australian Halangahu stepped up to split the posts from distance.
Giovanbattista Venditti, who was tidy in his clearing and covering, and Mauro Bergamasco, the heartbeat of the visitors' pack, led Zebre in terms of work-rate.
With the try-lines not threatened at both ends, a third successful penalty from Parks put six points between the sides at the break.
Parks kicked Connacht to within five metres of the whitewash early in the second period, and the pressure took its toll.
Zebre leaked a penalty from the ensuing line-out maul and then two scrum infringements, with White, Jason Harris-Wright and Brett Wilkinson dominating their front row opponents, led to a penalty try.
Parks converted but there was no sign of Zebre wilting as Bergamasco willed his team-mates forward and Connacht indiscipline gave them further scoring chances.
Halangahu continued his strong showing with the boot, firing over a quick-fire penalty brace after 49 and 51 minutes.
The Italian outfit pressed for a try shortly afterwards, going close through their forwards with replacements David Ryan and Matias Aguero solidifying their scrum initially.
Zebre's sudden resurgence almost saw them erase Connacht's lead as they broke from a scrum on the 10m line, centres Roberto Quartaroli and Matteo Pratichetti punching the hole which led to Trevisan scoring out wide.
The difficult conversion was missed by Halangahu, leaving Connacht just two points ahead with Parks suffering his first miss entering the final quarter.
Halangahu's penalty in the 69th minute set up a nervy finish, but a ruck offence ensured that Parks restored Connacht's advantage just two minutes later.
Then a strong run from Henshaw helped set up the insurance score, a second drop-goal from Parks, as Connacht triumphed in Eric Elwood's last European match in charge of the Irish province.
Connacht: Henshaw, O'Halloran, E. Griffin, McSharry, Vainikolo, Parks, Marmion, Wilkinson, Harris-Wright, White, Swift, McCarthy, Kearney, O'Connor, Browne.
Replacements: Poolman for E. Griffin (60), O'Donohoe for Marmion (71), Reynecke for Harris-Wright (71), Loughney for White (71), Grace for O'Connor (75).
Not Used: Cooney, Gannon, Nikora.
Zebre: Tebaldi, Venditti, Quartaroli, Pratichetti, Trevisan, Halangahu, Chillon, Perugini, Giazzon, Redolfini, Van Vuren, Sole, Caffini, Bergamasco, Ferrarini.
Replacements: Pace for Tebaldi (75), Martinelli for Chillon (51), Aguero for Perugini (49), Festuccia for Giazzon (41), Ryan for Redolfini (41), Belardo for Caffini (75), Manici for Ferrarini (60).
Not Used: Chiesa.
Ref: Pascal Gauzere (France).