"A song for two people", you say? Yeah, sometimes; think of Kenny Rogers and Dolly Parton singing "Islands in the Stream".
Sometimes it's even that simple in opera! In Mozart's Marriage of Figaro there are a number of duets that basically fit the description of a short number for two vocalists: the Susanna/Marcellina duet; the Almaviva/Susanna duet; and the famous "Letter duet" for Susanna (again!) and the Countess.
But sometimes an operatic duet aspires for something more complex; more profound; of greater substance than a "song". Giuseppe Verdi, for example, achieved something remarkable in Act 2 of La Traviata. He created a confrontation between Violetta and the elder Germont that is the catalyst for everything that happens afterward. It sends both characters on a roller-coaster of evolving emotions and attitudes that begin with mutual hostility and end with mutual empathy. It's a scene of astounding insight into human nature and psychology, rendered with devastating musical aptness.
The thing that makes such substance and complexity possible in a "duet" is its architectural design. Verdi borrowed from instrumental forms to turn this "duet" into a multi-movement work similar to a sonata or concerto.
What genius! What innovation! What craftsmanship!
One little detail - Gaetano Donizetti did it first, almost two decades earlier.
Theory: before writing Traviata, Verdi made close and careful study of Act 2, scene i of Lucia di Lammermoor, in which a similar multi-movement design unfolds in the confrontation between Lucia and her brother Enrico.
In this scene, which runs to some thirteen minutes or more, Enrico puts the screws to his sister, heartlessly manipulating her into marrying Arturo Bucklaw. Initially defiant, Lucia's resolve dissipates when shown a forged letter (supposedly from her lover Edgardo) ending their affair. Enrico, feigning empathy (he's no Germont!) for her situation, explains that his own life is in danger should the marriage not take place. In the end, he turns threatening, warning her not to betray him as the sounds of Arturo's arrival are heard. Her spirit broken, Lucia is utterly defeated.
That's a bit much to cram into a "song"; hence, the need for a multi-movement work. What follows below is a breakdown of each of Donizetti's movements, detailing the sub-structure of each. The entire "sonata" follows the traditional layout of fast-slow-fast contrast. You might find it useful to follow along as you listen to a recording.
Though marked "Moderato" in tempo, the music is quick-moving, with plenty of rapid sixteenth-notes to provide a lively character in keeping with a first movement. The sub-structure consists of two contrasting themes. The first ("A"), has a sharply rhythmic character. It's followed by a more lyrical theme in the same key ("B").
Lucia states the themes first, berating her brother for his cruelty to her. Enrico sings the same two themes, though in a lower key. That his musical material is the same as hers gives this movement its confrontational character; the themes are "butting heads", so to speak; Lucia is the immovable object while Enrico is the irresistible force.
This movement ends with a virtuoso flourish , but DON'T CLAP! We're just getting started. A transitional passage of dialogue advances the plot with the revelation of the forged letter. Lucy reads it and instantly gives in to despair, prompting the second movement, an expressive slow section.
Marked "Larghetto", Lucia's lament begins in a new key: B flat major. This time, as will be explained, the two characters sing different themes. Lucia's is elegiac and bittersweet:
Donizetti had to assign a different theme for Enrico's section of this movement, because his affect is different from his sister's: he is not in mourning, after all. Instead, he "mansplains" to her how close she came to betraying the Ashton clan. Feeling he has won, he can't resist a more dance-like theme with the character of a waltz:
The movement ends with an elaborate cadenza for the two voices, following the custom of the bel canto style.
Dialogue in the final transitional passage provides two advances in plot. First, Arturo is arriving, meaning that Lucia is running out of options; second, Enrico reveals the perilous state of his own political connections. His life is in danger. (As with many opera "villains", Enrico doubtless does not see himself as evil. He likely feels that he has a right to protect his own neck, and in the patriarchal culture of those times, he's unlikely to understand why Edgardo is so preferable to Arturo. After all, the point of a husband is to provide wealth and station for his wife, right? And many marriages were arranged in those days. The trouble with Evil is that too often it lacks self-awareness.)
The duet ends with a legitimately fast tempo, marked "Vivace", as would be expected for the finale of a sonata or concerto. The key reverts to the original G major, providing tonal symmetry. This time, it is Enrico who states the theme, a robust tune whose energy expresses his impatience with Lucia as he warns her to go along with his plans:
As Lucia's response is in sharp contrast, consisting of a prayer to God for mercy, Donizetti might have given her a new and contrasting theme. But the desire for formal symmetry made it more important to have her repeat Enrico's theme, duplicating the design of the first movement in reverse (Enrico-Lucia, as opposed to Lucia-Enrico). In performance, her version of the theme often is slightly more moderate in tempo.
The entire structure ends in a blaze of vocal fireworks, sure to spur the applause of the audience. Even listeners who know nothing about sonata form intuitively understand that the entire work has ended.
You could make the case that Verdi's grand duet for Violetta and Germont displays definite advances on Donizetti's effort in subtlety and sophistication. But let's agree that without the example of Lucia, Traviata might not have been possible.