The injured man had just pulled out of the Good Companion pub and into Eastern Road, Milton, when there was a crash with another car heading south.
Emergency services were alerted to the collision just after 8pm, with two fire crews from Southsea, several police units and a paramedic called to the scene.
A small stretch of Eastern Road was closed for about two hours while firefighters used hydraulic cutting tools to slice the roof off the vehicle and free the male.
Electrician John Smitherman, 20, of Bedhampton, was driving south. He said: ‘It shook me up. There was smoke in my car. I was coughing my guts up.’
The other man was taken to Queen Alexandra Hospital with a suspected neck injury.