The Grammy-winning jazz-pop diva turned up almost an hour late for the outdoor show. She apologized for having a sore throat, and her voice cracked during the 55-minute set.
Winehouse, wearing a short dress, appeared distracted during her performance. She paused to talk to members of her band, fiddled at length with her microphone, sucked throat candy and at one point dashed offstage but quickly returned.
She had cuts on her left arm, and her right hand was bandaged.
Winehouse's musical career has flourished despite her erratic behavior, missed concerts and stints in drug rehab.
"Hey Lisbon," Winehouse told the crowd, which had booed when she failed to show up on time. "I'm sorry I'm late," she said.
The sell-out crowd, gathered in a park for the Rock in Rio festival, warmed to Winehouse as the 24-year-old sang hits including her breakthrough song "Rehab," soul classics and reggae songs.
The crowd wasn't thoroughly thrilled, though, and she walked off stage without playing an encore. The crowd remained subdued.
Winehouse was the third act of the day on the festival's main stage, coming on before headliner Lenny Kravitz.
Winehouse's management told the festival organizers she would not speak to the media.
The singer is booked to play at a series of music festivals in Europe this summer. She said she is set to perform next month at a concert in London honoring Nelson Mandela.
Last week she won an Ivor Novello award, a prestigious British prize, for "Love Is a Losing Game" from her "Back to Black" album. Her father received the prize after Winehouse arrived late to the ceremony.
Earlier this month, the singer was arrested and questioned by police about video footage that appeared to show her inhaling fumes from a crack pipe. Authorities said the singer would not be charged.
Last year she canceled a series of British concerts and postponed a tour of the U.S. and Canada after British media reported that she was in and out of rehab.